1

我正在使用的 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);

WherefreeIds也来自 C 库,并释放getIds.

他们也提供了一个 .Net Interop 程序集,但它不导入该getIds功能。我可以访问互操作程序集源代码。

我的程序是用 C# 编写的,所以我想知道是否可以向互操作程序集添加导入,它应该是什么样子,以及我的 C# 代码必须是什么样子才能调用该函数。

我对 dll 导入的猜测是:

[DllImport("foo.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr getIds();

但我无法让 C# 调用它,因此我不知道 dll 导入是否正确。

4

1 回答 1

0

看看Marshaling char**。您的 dllimport 应该可以工作。

于 2012-07-20T15:58:17.333 回答