我正在从驱动程序读取数据。该驱动程序附带了有关如何基于该驱动程序开发应用程序的示例。这些例子是几年前写的。他们使用 WINAPI 和 C。现在我将使用他们的一些头文件。他们定义了数据结构和其他各种东西。
我尝试在 C++ 中创建一个 WINAPI 并尝试链接到这些文件。但正如这里所解释的,在最后一个答案中,我非常相信我的代码也有同样的问题。
现在,我不能按照那里的建议去做。我的程序很长,我不能弄乱头文件。它们很复杂。
我的选择是完全用 C 创建我的项目(我希望它能解决)。
首先,我将文件重命名为 .cpp t0 .c。(我什至不知道这两种编程语言之间的区别。到目前为止,它们的区别没有任何区别。) 主要问题
我使用 API 使用文件 IO 并使用以下内容:
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 函数中。