我只是在一个名为“fft.dll”的 native C++ DLL 和一个 C# 控制台应用程序之间编写一个小型测试集成。
fft.dll 包含一个名为 Fourier
的类其中包含一个静态方法:
#include <complex>
using namespace std;
class Fourier
{
public:
static complex<double>* fft(complex<double>*);
};
静态方法fft(...)
简单地计算 complex<double>
的 FFT数组,并将计算的 FFT 作为 complex<double>
返回数组。
我有两个问题:
- 该函数接受
complex<double>
的数组s,但据我所知,.Net 中不存在这样的数据结构。我如何/应该如何格式化我的数据以传递到fft(...)
功能? - 由于静态成员在一个类中,因此在我的 .Net 控制台应用程序中使用
[DllImport("fft.dll")]
时应该使用什么语法? ?
谢谢
编辑: 追问:here
最佳答案
P/Invoke不支持调用静态类函数,也不支持和理解C++模板。
正如 VinayC 所建议的,在您的 C++ dll 中编写另一个包装器方法,该方法是全局的,它将数据从简单的 double 组编码到您的 C++ 静态函数正在使用的模板化数组或从中编码。
关于C# DLLImport 'Complex' 数组返回和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062457/