Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何用C+调用LabVIEW构建的DLL+;_C++_Dll_Call_Labview - Fatal编程技术网

C++ 如何用C+调用LabVIEW构建的DLL+;

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

很高兴认识你! 这是我第一次发到stacoverflow。 我正在学习C++和LabVIEW,我自己的教育。 LabVIEW是图形设计编程环境,它可以从LabVIEW代码构建DLL。 “从LabVIEW代码创建DLL”

我建立了一个简单的DLL,并试图从C++代码中调用它。 我们可以通过DLL求A和B的和。 首先,我制作了如下的源代码

#包括“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
中的第三个参数表示什么?这应该是总和吗?