C++ 如何用C+调用LabVIEW构建的DLL+;
很高兴认识你! 这是我第一次发到stacoverflow。 我正在学习C++和LabVIEW,我自己的教育。 LabVIEW是图形设计编程环境,它可以从LabVIEW代码构建DLL。 “从LabVIEW代码创建DLL” 我建立了一个简单的DLL,并试图从C++代码中调用它。 我们可以通过DLL求A和B的和。 首先,我制作了如下的源代码C++ 如何用C+调用LabVIEW构建的DLL+;,c++,dll,call,labview,C++,Dll,Call,Labview,很高兴认识你! 这是我第一次发到stacoverflow。 我正在学习C++和LabVIEW,我自己的教育。 LabVIEW是图形设计编程环境,它可以从LabVIEW代码构建DLL。 “从LabVIEW代码创建DLL” 我建立了一个简单的DLL,并试图从C++代码中调用它。 我们可以通过DLL求A和B的和。 首先,我制作了如下的源代码 #包括“stdafx.h” #包括 #包括 使用名称空间std; int _tmain(int argc,_TCHAR*argv[] { HINSTANCE
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]
{
HINSTANCE hDLL=LoadLibrary(文本(“C:\\sum\u dll.dll”);
如果(hDLL==NULL){
cout假设myFunc
的第三个参数表示总和:
函数签名不匹配。myFunc
返回void,但函数指针typedef表示返回int。执行此操作时行为未定义(我很惊讶程序没有崩溃)
typedef void(*FUNC)(int32\u t、int32\u t、int32\u t*);
此外,您还应该精确匹配导出的DLL函数所需的类型。在typedef中,您可以说int
,但函数采用int32\t
鉴于上述修复,其他问题包括:
1) 呼叫应传递myValue
2) DLL函数返回void,因此在cout
中使用它毫无意义
myFunc(2,3,&myValue);
cout << "myValue = " << myValue << endl;
myFunc(2,3和myValue);
谢谢你的评论
我更改了C++源代码如下。
没有崩溃,返回了正确的值
我相信我应该学习C++指针和变量类型。
非常感谢你
#包括“stdafx.h”
#包括
#包括
#应调用include//以使用int32\t
使用名称空间std;
//定义函数的类型
typedef void(*FUNC)(int32_t、int32_t、int32_t*);
int _tmain(int argc,_TCHAR*argv[]
{//将指定的模块加载到调用进程的地址空间中。
HINSTANCE hDLL=LoadLibrary(文本(“C:\\sum\u dll.dll”);
如果(hDLL==NULL){
cout直到我在项目属性->链接器->输入->延迟加载DLL中包含.lib文件时,它才起作用。您已经在代码中注释掉了myValue
。那么它怎么可能返回0呢?第二个版本的myFunc
中的第三个参数表示什么?这应该是总和吗?