【发布时间】:2012-07-25 09:13:26
【问题描述】:
我有具有以下签名的 C++ 方法:
typedef char TNameFile[256];
void Foo(TNameFile** output);
我已经没有如何编组它的想法了。
【问题讨论】:
-
为什么有一个指向数组指针的指针?似乎其中至少有一个是不必要的。可能两者都有,在这种情况下,数组也可能是返回值。
-
@millimoose 它是指向在 Foo 中创建的 TNameFile 的输出数组的指针。这是第三方库。不能对签名和内容做任何事情
-
使用
static extern void Foo(IntPtr output)然后使用Marshal类遍历数组并读取内容 -
你试过什么?您需要发送开始数组的地址的指针。数组已经(或多或少)是一个地址。
-
我想说这两种间接方式都不是必需的......(除非你想在 C# 中分配内存并在 C++ 中分配给“输出”,这将导致世界痛苦)跨度>
标签: c# c++ interop pinvoke marshalling