在LabVIEW中向DLL传递复数和从DLL传递复数
Pass complex numbers to and from a DLL in LabVIEW
我正在尝试将这个C++代码与LabVIEW接口(我目前正在运行LV2009),该代码实现计算Voigt线形所需的功能。我成功地将代码编译成了DLL,并设置了指向DLL的Call Library Function Node
。但是,该函数需要一个复二重类型的向量,并返回一个复双重类型的向量。然而,在设置函数原型时,复杂的double并不是我选择的数据类型之一。
不幸的是,我不会说C/C++,所以我不知道如何修改代码以只获得和返回真正的doubles。我已经将代码编译成MEX文件,与MATLAB一起使用,并且可以毫无问题地传入和传出复数,所以我知道代码是有效的。
有没有办法欺骗LabVIEW 2009在DLL函数中传递复数?如果没有,如果我升级到最新版本,我会获得这种能力吗?如果没有,有没有一个很好的C++基本指南可以教我如何修改函数,接受并返回实数和虚数作为单独的向量?
LabVIEW不允许与C++代码接口,只允许与C代码接口(或者,如果是C++,则必须具有extern "C"
声明并使用纯旧类型)。
我看到您的库有C包装器,但它们使用了新的C99complex
类型,LabVIEW对此并不理解。
然而,LabVIEW可以将复杂的数据类型传递给函数,看看它是如何完成的。打开名为"调用DLL.vi"的示例,选择复杂的数据种类来查看函数原型和vi。你可能会发现C99complex
与LabVIEW具有相同的二进制表示。我没有挖掘这些信息,但这可能很有可能。
如果是这样的话,去教堂,感谢你的主,并使用C包装器与之接口。
如果不是,找一个关于为编译器制作DLL的教程,这并不难,只是需要时间。DLL将为每个复合体使用两个double
,并对实际函数进行适当的调用。
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 在C++中向零方向近似的最佳方法
- 从DLL中删除类的实例
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何在文件中向下移动?
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- 如何在公共头文件中向库的用户公开枚举,同时在内部使用它?
- 如何在窗口中使用注入的 dll 中的参数调用函数
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 无法在 DLL 中链接 SDL2-static.lib
- 如何在Qt C++中向自定义控件添加属性?
- 在 c++ 中向下抛弃疑惑
- 我可以從 DLL 中匯出 Windows CRITICAL_SECTION嗎?
- .EXE是否可以使用间接导入的 DLL 中的符号?
- 在C++中向基类返回shared_ptr
- VB.NET DLL中的C++DLL函数复制
- Dll中缺少什么(致命错误LNK1107:无效或损坏的文件:)
- 在LabVIEW中向DLL传递复数和从DLL传递复数
- 向.dll中添加图像