C# DLLImport 'Complex' 数组返回和参数

标签 c# c++ interop dllimport complex-numbers

我只是在一个名为“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> 返回数组。

我有两个问题:

  1. 该函数接受 complex<double> 的数组s,但据我所知,.Net 中不存在这样的数据结构。我如何/应该如何格式化我的数据以传递到 fft(...)功能?
  2. 由于静态成员在一个类中,因此在我的 .Net 控制台应用程序中使用 [DllImport("fft.dll")] 时应该使用什么语法? ?

谢谢

编辑: 追问:here

最佳答案

P/Invoke不支持调用静态类函数,也不支持和理解C++模板。

正如 VinayC 所建议的,在您的 C++ dll 中编写另一个包装器方法,该方法是全局的,它将数据从简单的 double 组编码到您的 C++ 静态函数正在使用的模板化数组或从中编码。

关于C# DLLImport 'Complex' 数组返回和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062457/

相关文章:

接受字符串参数的C#函数: How to refactor to use something strongly typed?

c# - Excel Interop (Visual Studio C#) - "Embed Interop Type"属性

c# - 从 C# 调用 F# 代码

c# - 将字符串数组从 C# 传递到 C++ - 内存管理

c# - 访问 Win32_OperatingSystem 的属性

c# - MVVM 和 WPF 结构

c# - 如何将 Xamarin.Forms 条目绑定(bind)到非字符串类型,例如 Decimal

c++ - undefined symbol 引用 'pthread_rwlock_wrlock@@GLIBC_2.2.5'

c++ - 使用局部变量调用函数或填充控制 if 语句比直接嵌套函数调用更有效吗?

c++ - 我如何使用 ioctl() 在 VxWorks 的套接字上设置 FIONBIO?