【发布时间】:2013-09-28 14:46:40
【问题描述】:
我为非托管 C++ 库制作 .Net 包装器。我需要使用带有此签名的函数:
BOOL Func ( float *OUT floatArray)
我在托管 C++ 中试过这个:
float* mp = new float(10);
bool what = Func(mp);
但我遇到了 AccessViolationException。 (尝试读取或写入受保护的内存。这通常表明其他内存已损坏。) 怎么了?
这是我在托管 C++ 中的函数:
bool MyFunc (array<Single>^% floatArray)
我正在尝试使用此函数返回 C# float[]。也许还有另一种选择来完成我的任务。
【问题讨论】:
-
你能说明你是如何从 C# 调用它的吗?
-
var d = new MyClass();浮动[] a = 新浮动[10]; var id = d.Func( 参考 a);我什至不尝试在异常之前访问它。有错误的托管 C++ 代码: bool Func (array
^% floatArray) { float mp[10] = {0}; bool what = managedFunc(mp);} -
你为什么不使用“float* mp = new float[10];”? (带方括号)。
-
我试过了。同样的错误。仅当我传递 float *mp 变量而不分配值时才有效。但是我不知道如何从这个指针创建一个数组。