【发布时间】:2015-07-18 23:32:46
【问题描述】:
我在我的 C# 项目中使用了 C++ dll。使用 pInvoke(平台调用)。
我的 C++ 代码返回一个 double***,而 C# 函数返回一个 IntPtr。
我在两边都有矩阵的尺寸,它们只是不是恒定的。
在 C# 方面我有:
[DllImport("mylib.dll")]
public static extern IntPtr GetMatrix(int width, int height, int depth);
在 C++ 方面我有:
extern "C" {
__declspec(dllexport) double*** GetMatrix(int width, int height, int depth) {
// do stuff
return matrix;
}
}
现在我需要将此 IntPtr 转换为 double[,,],但是,我不知道该怎么做。
基本上我需要与this question 的答案相反。
【问题讨论】:
-
您需要了解更多。只知道类型是不够的。您还需要知道尺寸。
-
我知道两边的尺寸,只是不是恒定的。我编辑了问题...
-
我解决了这个问题,而不是返回整个矩阵,我只是返回一个双精度。所以是的,我多次调用 DLL。至少这些值是正确的。但我的问题仍然没有解决方案......
-
问题中缺少什么?
-
关于如何获取开始尺寸的说明
标签: c# c++ arrays pinvoke intptr