LabVIEW论坛
直播中

张智磊

9年用户 9经验值
擅长:可编程逻辑 模拟技术 接口/总线/驱动 控制/MCU MEMS/传感技术
私信 关注
[问答]

LABVIEW调用DLL,DLL中包含全局变量不识别的问题

1.png2.png

头文件中写法如上,.cpp文件中写法如下3.png
导入DLL时,错误如下
4.png
这个报错就很没有道理
我在同样的文件中按同样的写法,写一个add(a,b,c)函数,同样写全局变量的话,它就不会报这样的错,所以我可以排除是头文件或者预处理定义的问题。
很头疼,有没有大神指导一下。

回帖(1)

李艳

2024-5-31 16:20:36
从你的描述来看,问题可能出在全局变量的使用上。在DLL中使用全局变量时,需要注意以下几点:

1. 确保全局变量在DLL中是正确的导出和导入。在头文件中,使用`extern`关键字声明全局变量,例如:

```cpp
// 在头文件中
#ifdef DLL_EXPORT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

extern DLL_API int global_variable;
```

2. 在.cpp文件中,定义全局变量,并确保使用了相同的宏定义:

```cpp
// 在.cpp文件中
#ifdef DLL_EXPORT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

DLL_API int global_variable = 0;
```

3. 在LABVIEW中调用DLL时,确保正确地设置了全局变量的访问权限。在LABVIEW中,你可以使用以下步骤:

   a. 在LABVIEW中创建一个调用节点,选择你的DLL文件。
   
   b. 在调用节点的属性中,找到“全局变量”选项卡。
   
   c. 在“全局变量”选项卡中,添加你的全局变量,并设置正确的数据类型和访问权限。

4. 如果问题仍然存在,尝试在LABVIEW中使用其他方法调用全局变量,例如使用`Call Library Function Node`节点。

5. 确保你的DLL文件已经正确编译并生成,以便LABVIEW可以正确加载。

希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我能更好地帮助你。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分