CVI调用VC封装WinDriver驱动的DLL
2007-12-26 00:59
274 查看
CVI调用VC封装WinDriver驱动的DLL(PCI驱动)
WinDriver生成的代码是标准C的,CVI用的也是标准C,如果用VC封装成DLL就需要注意下面几点:
1. VC中的头文件中,输出文件需要用extern “C”修饰,否则不能被CVI调用。(因为CVI是标准C)
2. 调用约定必须用__stdcall,因为驱动中可能要采用win32 API。
3. __stdcall调用可能产生C不识别的修饰名,所以设置导出函数时要采用.def文件形式,而不是__declspec(dllexport)形式。后者会进行修饰名转换,C语言无法识别函数。
4. 在LabWindows/CVI使用一个外部的DLL时,您需要一个导入library,把CVI的函数调用和对应的DLL函数定义链接起来。有时应用上述方法生成DLL时生成的静态库还有些问题,导致连接失败。此时就可以应用下述方法在CVI中生成静态库文件:“Options</strong>”,再选择“Generate DLL Import Library</strong>”,会出现提示,通过浏览文件的方式选择DLL,生成导入library。CVI于是会创建导入library,这样在CVI环境中,您可以在编译链接的时候包含这个导入library。
WinDriver生成的代码是标准C的,CVI用的也是标准C,如果用VC封装成DLL就需要注意下面几点:
1. VC中的头文件中,输出文件需要用extern “C”修饰,否则不能被CVI调用。(因为CVI是标准C)
2. 调用约定必须用__stdcall,因为驱动中可能要采用win32 API。
3. __stdcall调用可能产生C不识别的修饰名,所以设置导出函数时要采用.def文件形式,而不是__declspec(dllexport)形式。后者会进行修饰名转换,C语言无法识别函数。
4. 在LabWindows/CVI使用一个外部的DLL时,您需要一个导入library,把CVI的函数调用和对应的DLL函数定义链接起来。有时应用上述方法生成DLL时生成的静态库还有些问题,导致连接失败。此时就可以应用下述方法在CVI中生成静态库文件:“Options</strong>”,再选择“Generate DLL Import Library</strong>”,会出现提示,通过浏览文件的方式选择DLL,生成导入library。CVI于是会创建导入library,这样在CVI环境中,您可以在编译链接的时候包含这个导入library。
相关文章推荐
- 使用vc封装纯资源dll及调用
- VC++中把窗体封装到dll中并调用
- 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)
- 将QT开发的界面程序封装成DLL,在VC中成功调用
- CVI直接调用WinDriver驱动
- 【转】将QT开发的界面程序封装成DLL,在VC中成功调用
- 【转】将QT开发的界面程序封装成DLL,在VC中成功调用
- 将QT开发的界面程序封装成DLL,在VC中成功调用
- C++ builder 调用VC 封装的dll组件
- VC++中把窗体封装到dll中并调用
- 用VC创建供PB调用的DLL
- 某项目要调用现有的100多个DLL 五 自动封装跨域调用的逻辑
- 使用VC脚本编译本地dll调用
- VC DLL内封装MicroDraw ActiveX控件;C#内再调用DLL
- VC中使用动态链接库DLL:静态调用和动态调用
- vs下opencv的人脸检测以及qt下dll的封装调用(二、dll的创建)
- VC调用C#的COM组件(DLL)
- 【DLL相关】实现函数的DLL封装,并在另一个项目中调用
- c++封装dll供c#调用
- 学习使用C++封装DLL并调用