Marshal是一个双char指针返回值
我正在使用的AC库有一个函数,它返回一个指向char指针数组的指针:
extern char** getIds();
使用示例:
char **list, **list_save; list_save = list = getIds(); while (list && *list) { printf("Id: %s\n", *list); list++; } freeIds(list_save);
其中freeIds
也来自C库,并释放在getIds
期间分配的内存。
它们也提供.Net Interop程序集,但它不会导入getIds
函数。 我可以访问interop汇编源代码。
我的程序是在C#中,所以我想知道是否可以在interop程序集中添加一个导入,它应该是什么样的,以及我的C#代码调用该函数的样子。
我对dll导入的猜测是:
[DllImport("foo.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr getIds();
但是我无法让C#调用它,因此我不知道dll导入是否正确。
看看Marshaling char ** 。 你的dllimport应该工作。