C++ 在LabVIEW中向DLL传递复数和从DLL传递复数

C++ 在LabVIEW中向DLL传递复数和从DLL传递复数,c++,dll,labview,C++,Dll,Labview,我正在尝试用LabVIEW(我目前运行的是LV2009)连接——它实现了计算Voigt线型所需的函数。我成功地将代码编译成DLL,并设置了调用库函数节点以指向DLL。但是,该函数需要一个复数double类型的向量,并返回复数double类型的向量。但是,在设置函数原型时,复杂双精度不是我选择的数据类型之一 不幸的是,我不会说C/C++,所以我不知道如何修改代码以获得并返回真正的双精度。我已经将代码编译成一个MEX文件,与MATLAB一起使用,并毫无问题地将复数输入和输出,因此我知道代码工作正常

我正在尝试用LabVIEW(我目前运行的是LV2009)连接——它实现了计算Voigt线型所需的函数。我成功地将代码编译成DLL,并设置了
调用库函数节点
以指向DLL。但是,该函数需要一个复数double类型的向量,并返回复数double类型的向量。但是,在设置函数原型时,复杂双精度不是我选择的数据类型之一

不幸的是,我不会说C/C++,所以我不知道如何修改代码以获得并返回真正的双精度。我已经将代码编译成一个MEX文件,与MATLAB一起使用,并毫无问题地将复数输入和输出,因此我知道代码工作正常


有没有办法欺骗LabVIEW 2009在DLL函数中传入和传出复数?如果不是,我升级到最新版本时是否会获得此能力?如果没有,那么有没有一个很好的C++基础指南,它将教我如何修改函数来接受并返回真实和虚部作为单独的向量?

< pLabVIEW不允许与C++代码接口,只有C(或者如果是C++,它必须有<代码>外部”C“< /Cord>声明,使用普通的旧类型”。 我看到您的库有C包装器,但它们使用了新的C99
complex
类型,而LabVIEW不理解这一点

但是,LabVIEW可以将复杂数据类型传递给函数,以查看如何完成。打开名为“Call DLL.vi”的示例,选择复杂数据类型以查看函数原型和vi。您可能会发现C99
complex
具有与LabVIEW相同的二进制表示形式。我没有挖掘信息,但这可能是非常有可能的

如果是这样的话,去教堂感谢你的主,并使用C包装器来连接它


如果不是的话,找一个关于为编译器创建DLL的教程,这并不难,只是需要时间。对于每个复杂函数,DLL将使用两个
double
,并对实际函数进行适当的调用。

回答得很好。我已经编写了大量的C/C++FFT代码,这些代码在Labview中被调用,当处理复杂的数字时,包装器是最好的选择。