阅读:3112回复:6
各位大虾!急切请教:关于windriver api函数的使用!
小弟正调试一块 9054的PCI卡,在WINDRIVER里自带的大都是类DOS下
的例子,现在我得在vc++6.0(win2000系统)下调用其API函数,我把p9054_lib.h/c 包含到我的一个对话框应用程序,编译出现下面情况: --------------Configuration: Mypci - Win32 Debug------------Compiling... MypciDlg.cpp Generating Code... Compiling... p9054_lib.c c:\\windriver\\plx\\9054\\lib\\p9054_lib.c(985) : fatal error C1010: unexpected end of file while looking for precompiled header directive Generating Code... Error executing cl.exe. Mypci.exe - 1 error(s), 0 warning(s) 非常着急,恳求大虾给个方法!感谢感谢!!! |
|
|
沙发#
发布于:2003-05-18 21:06
有回答说:(在vc下)
将c文件改名cpp,并包含 stdafx.h 照做之后,上面错误消失,新错误如下: --------------Configuration: Mypci - Win32 Debug---- Compiling... p9054_lib.cpp C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(297) : error C2664: \'P9054_IsAddrSpaceActive\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(527) : error C2664: \'P9054_ReadByte\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(534) : error C2664: \'P9054_WriteByte\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(541) : error C2664: \'P9054_ReadWord\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(548) : error C2664: \'P9054_WriteWord\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(555) : error C2664: \'P9054_ReadDWord\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(562) : error C2664: \'P9054_WriteDWord\' : cannot convert parameter 2 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) C:\\WinDriver\\plx\\9054\\lib\\p9054_lib.cpp(570) : error C2664: \'P9054_ReadWriteBlock\' : cannot convert parameter 6 from \'unsigned long\' to \'P9054_ADDR\' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) Error executing cl.exe. Mypci.exe - 8 error(s), 0 warning(s) |
|
|
板凳#
发布于:2003-05-18 21:47
针对上面问题,我强制转换之后,又有新错误:
p9054_lib.obj : error LNK2001: unresolved external symbol _Stat2Str p9054_lib.obj : error LNK2001: unresolved external symbol _InterruptEnable p9054_lib.obj : error LNK2001: unresolved external symbol _InterruptDisable Debug/Mypci.exe : fatal error LNK1120: 3 unresolved externals Error executing link.exe. Mypci.exe - 4 error(s), 0 warning(s) 我在 驱动开发网 下了源代码 《〈laosun_并口调试助手〉〉 按他的做法,出现了同型错误; par_lib.obj : error LNK2001: unresolved external symbol _InterruptThreadEnable par_lib.obj : error LNK2001: unresolved external symbol _InterruptThreadDisable Release/LPTTest.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. LPTTest.exe - 3 error(s), 0 warning(s) |
|
|
地板#
发布于:2003-05-19 14:55
你是怎么调用的那些API函数啊?如果是用的WINDRIVER生成的框价代码,应该不会出这个问题的,我用的都没有错误啊!
对了,你可以研究一下WINDRIVER自己的哪个PCI程序,很好的,也可以做框价开发! |
|
地下室#
发布于:2003-05-21 20:54
你是怎么调用的那些API函数啊?如果是用的WINDRIVER生成的框价代码,应该不会出这个问题的,我用的都没有错误啊! 你说的是在自己的应用程序中用到那些函数呢? 还是生成驱动程序时用到这些函数呢??!! 请指教!! |
|
5楼#
发布于:2003-05-22 12:06
WINDRIVER生成的代码其实就是用户模式的应用程序,你直接就在这个代码下完成驱动功能就好了!
|
|
6楼#
发布于:2003-08-24 23:13
我也碰到了相同的问题,其实很容易解决的,按照下列步骤就可以解决:
在VC程序中,打开“项目”->“设置”->\"C/C++\",将第一个下拉框(Class(分类))中的General换为“precompiled headers”,然后选择第一个单选框“不使用预编译头文件”即可。祝你好运! |
|
|