【发布时间】:2011-11-01 11:36:05
【问题描述】:
我想做以下事情:
-
在 C# 代码中创建三个维度数组,如下所示:
var myArray = new short[x,y,z]; UnanagedFunction(myArray); -
像这样将它传递给非托管代码 (c++):
void UnmanagedFunction(short*** myArray) { short first = myArray[0][0][0]; }
更新 当我尝试以下代码时,出现运行时错误:
试图读取或写入受保护的内存。
谢谢!!!
【问题讨论】:
-
你不能用 C++ 编写这样的代码。
-
代码的第一部分在 c# 中,第二部分在 c++ 中,我现在尝试了编译器允许我使用 c++ 代码
-
也许您可以将代码更改为三元组数组。
-
@Simon,一组三元组有什么帮助?您是指四倍(x、y、z 和值)吗?
-
你甚至不能在纯 C++ 中做到这一点。您必须在函数原型上编写除一维之外的所有维度。阅读:c-faq.com/~scs/cclass/int/sx9a.html(例如
void UnmanagedFunction(short myArray[][10][10]))
标签: c# c++ marshalling dllimport