labview调用VS2015生成的DLL

使用 _declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。_declspec(dllexport) 会将导出指令添加到对象文件中,不需要使用 .def 文件。extern "C"的真实目的是实现类C和C++的混合编程。在C++源文件中的语句前面加上extern "C",表明它按照类C的编译和连接规约来编译和连接,而不是C++的编译的连接规约。这样在类C的代码中就可以调用C++的函数或变量。

使用extern "C" __declspec(dllexport)声明导出函数,在DLL中的函数名字保持与导出函数名一致。使用__declspec(dllexport)声明导出函数,在DLL中的函数名字与导出函数名字不一致,有变化。这些差异主要是使用C方式函数C++方式编译导致的。在使用GetProcAddress( HMODULE hModule, LPCWSTR lpProcName)函数查找导出函数时,最好在DLL中用extern "C" __declspec(dllexport)声明导出函数。

LABVIEW增强(亮)












(1)问题: 是否可以从64位的Labview中调用32位的DLL。

解答: 不可以。因为在64位的操作系统中,32位的DLL必须在一个模拟的内存空间来处理,他们无法与64位LabVIEW中执行的VI共同存在,如果您尝试在64位的LabVIEW中调用库函数节点时选择32位DLL,会弹出一个错误对话框说明。

“选择的库对于当前平台无效。例如,你正在运行64位的LabVIEW,然而库可能是一个32位的库。”

建议的解决方案是针对64位的操作系统重新编译DLL的源代码。或者,你可以加载在一个32位的LabVIEW中的VI或EXE,让其通过共享变量或其他网络技术使得64位的LabVIEW中和32位的LabVIEW中进行通信。

解决:配置vs2015的win32环境,和配置X64的全部过程一样,生成322位的DLL


猜你喜欢

转载自blog.csdn.net/weixin_41484240/article/details/80981959
今日推荐