【发布时间】:2019-12-06 09:48:24
【问题描述】:
我有一个 c++ 函数,其方法签名为
MyMethod(std::vector<double> tissueData, std::vector<double> BGData, std::vector<double> TFData, std::vector<double> colMeans, std::vector<double> colStds, std::vector<double> model)
我希望通过 dllimport 在 c# 中调用这个 c++ 函数。在创建 dll 库时,我已将 c++ 端的函数定义为
extern "C" __declspec(dllexport) int MyMethod(double *tissue, double *bg, double *tf, double *colMeans, double *colStds, double* model);
我计划将一个双精度数组从 c# 端传递给 c++ dll 函数。 但是,我不确定应该如何从 c# 端定义 DllImport,以及在将双数组解析为 dllImport 函数时应该如何转换它?
我读了一些关于编组的文章,但我还是不太明白,我不确定它是否可以在这里应用?
【问题讨论】:
-
您不能从外部 C++ 代码调用。您需要使用一个函数,该函数接受指向每个数组的第一个元素的指针和每个数组的长度作为参数。
-
你是什么意思?我没有在c#代码中定义dllimport属性
-
我很困惑。 std::vector 在问题中的作用是什么?另外,带有
double*的函数,该函数如何知道数组长度?至于pinvoke,使用double[]映射到double*
标签: c# c++ visual-studio dllimport unmanaged