c# - 从 C# Array MarshalAs 调用 C++ 有问题吗?

标签 c# c++ dll marshalling

所以我在 C++ 库中有一个函数:

double MyFunc(double** data, int length)
{
    //data elements are accessed like this
    (*data)[i] = 5.0;
}

在 C# 中,我以这种方式访问​​此函数:

//import
[DllImport(@"MYDLL.dll")]
public static extern double MyFunc(ref double[] data, int length);
//usage
MyFunc(ref data, data.Length);

这很愚蠢,因为我宁愿写:

double MyFunc(double* data, int length)
{
    //data elements are accessed like this
    data[i] = 5.0;
}

问题是,我不知道如何从 C# 访问所需的 C++ 函数...我不太精通编码(marshal)处理值...我该怎么做?

最佳答案

您可以直接传递一个double[]

关于c# - 从 C# Array MarshalAs 调用 C++ 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714281/

相关文章:

c# - 如何初始化泛型类的列表

c# - CodedUI 测试 - 无法在共享点中跨环境重复使用测试

c++ - 我如何使用 Bazel 构建这个简单的示例?

c++ - 如何将库合并到我的可执行文件中,以便用户不需要拥有 DLL?

c++ - dll 缺少对 Windows 7 文件的依赖项

c# - 如何在 C# 打印文档中设置和打印自定义纸张尺寸?

c# - 如何在面向 net462 框架的 .Net Core 项目中使用 ConfigurationPropertyAttribute?

c++ - ZeroMQ PUB-SUB通信:SUB什么也没收到

c++ - 将 Jenkins CI 用于 Qt 项目

c++ - 无法从 DLL 打开包含文件