【发布时间】:2015-07-10 13:44:24
【问题描述】:
我有一个为 C# 方法提供数组的 C++ 函数。我不知道我会得到多少元素作为回报。我想要的只是将一个数组(不指定元素计数)传递给 C++ 函数并重新填充。
到目前为止我的尝试:
C++ 代码
unsigned int lib_infos(
const char *code,
char **err,
int err_len,
char **linkinfo,
unsigned int* linksCount);
C#代码
[DllImport("mylib.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern uint lib_infos(
[MarshalAs(UnmanagedType.LPStr)] string code,
[MarshalAs(UnmanagedType.LPStr)] StringBuilder err,
int err_len,
[MarshalAs(UnmanagedType.LPArray,SizeParamIndex=1)] string[] linkInfo,
out uint linksCount);
【问题讨论】:
-
我知道这有点离题,但是您可以使用 google 协议缓冲区在 c# 和 c++ 之间传递数据结构,并在两侧进行编译类型检查和 OO 访问。
标签: c# c++ arrays marshalling