我正在尝试使用LabVIEW(我目前正在运行LV2009)来连接this C++ code - 它实现了计算Voigt线形状所需的功能。我成功地将代码编译成DLL,并设置Call Library Function Node
指向DLL。但是,该函数需要复数double类型的向量,并返回complex double类型的向量。但是,在设置函数原型时,复数double不是我对数据类型的选择之一。
不幸的是,我不会说C / C ++,所以我不知道如何修改代码来获取和返回真正的双打。我已经将代码编译成MEX文件以与MATLAB一起使用,并且可以毫无问题地传入和传出复数,所以我知道代码可以工作。
有没有办法让LabVIEW 2009将复数输入和输出DLL函数?如果没有,如果我升级到最新版本,我会获得这种能力吗?如果没有,是否有一个很好的C ++基本指南,它将教会我如何修改函数以接受并将实部和虚部作为单独的向量返回?
答案 0 :(得分:2)
LabVIEW不允许与C ++代码接口,只允许C(或者如果它是C ++,它必须具有extern "C"
声明并使用普通旧类型。)
我看到你的库有C包装器,但它们使用了新的C99 complex
类型,LabVIEW不理解。
然而,LabVIEW可以将复杂数据类型传递给函数,看看它是如何打开名为“调用DLL.vi”的示例并选择复杂数据类型来查看函数原型和VI。您的机会可能是C99 complex
具有与LabVIEW相同的二进制表示。我没有挖掘信息,但可能很有可能。
如果是这样的话,去教堂,感谢你的主,并使用C包装器与它接口。
如果不是,请找一个关于为编译器制作DLL的教程,这并不困难,只需要时间。 DLL将为每个复合体带两个double
,并对实际函数进行适当的调用。