2013-06-28 44 views
1

我正在讀取驅動程序中的數據。驅動程序附帶有關如何基於驅動程序開發應用程序的示例。這些例子是幾年前寫成的。他們使用WINAPI和C.現在我將使用他們的一些頭文件。他們有數據結構和各種其他東西的定義。C和C++中WINAPI的區別

我嘗試在C++中創建一個WINAPI並試圖鏈接到這些文件。但正如解釋here, in the last answer,我非常相信,我的代碼也是一樣。

現在,我無法按照建議那樣做。我的程序很長,我不能混淆頭文件。它們很複雜。

我的選擇是完全用C創建我的項目(我希望它解決了)。

首先,我重命名了文件.cpp t0 .c。 (我甚至不知道這兩種編程語言之間的區別它們的區別並沒有區別爲止。) 主要問題

我使用的文件IO使用API​​和使用下列內容:

HANDLE myFile=CreateFile("filename.txt",FILE_APPEND_DATA,FILE_SHARE_WRITE,0,\ 
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); 
int BufferNo=sprintf(body,"%.5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f \ 
%[3].5f %[3].5f \n",a1,a2,a3,a4,a5,a6,a7,a8,a9); 
WriteFile(myFile,body,lstrlen(body),0,NULL); 
CloseHandle(myFile); 

問題是它不編譯。說錯誤如:

error C2275: 'HANDLE' : illegal use of this type as an expression 
error C2146: syntax error : missing ';' before identifier 'myFile' 
error C2065: 'myFile' : undeclared identifier 
warning C4047: '=' : 'int' differs in levels of indirection from 'HANDLE' 
error C2143: syntax error : missing ';' before 'type' 
error C2065: 'myFile' : undeclared identifier 
warning C4022: 'WriteFile' : pointer mismatch for actual parameter 1 
error C2065: 'myFile' : undeclared identifier 
warning C4022: 'CloseHandle' : pointer mismatch for actual parameter 1 

這些都沒有在C++中的錯誤,他們編譯,只是沒有鏈接。我該如何解決這個問題。

請注意,在此之前有類似的功能。哪些不會被檢測爲錯誤。

HANDLE myFile=CreateFile("filename.txt",GENERIC_WRITE,FILE_SHARE_WRITE,0,\ 
CREATE_NEW, 
FILE_ATTRIBUTE_NORMAL,0); 
char* HeadingStr="a1(m) a2(m) a3(m) a4(m) a5(m) a6(m) a7(m)\ 
a8(m) a9(m)\n"; 
WriteFile(myFile,HeadingStr,lstrlen(HeadingStr),0,NULL); 
CloseHandle(myFile); 

這不顯示任何錯誤。它在同一個文件中並且在之前,在不同的函數上面有錯誤。這是在WinMain和以上是在WndProc功能。

+0

請評論,除了投票。 – user2178841

+0

'HANDLE'是在其中一個窗口頭文件中定義的。你將不得不包含一個或多個Windows頭文件。與此同時,與「最後答案」的聯繫是否應該爲您的問題提供背景?因爲我不明白。 – davidbak

回答

6

Visual Studio編譯器不支持C99,這是在添加內聯聲明時。您需要在函數的開頭聲明所有變量,或切換到支持C99的編譯器。