私が使用している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# で書かれているので、interop アセンブリにインポートを追加できるかどうか、それがどのように見えるべきか、関数を呼び出すために C# コードがどのように見える必要があるかを知りたいです。
dllインポートの私の推測は次のとおりです。
[DllImport("foo.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr getIds();
しかし、C# でそれを呼び出すことができなかったので、dll のインポートが正しいかどうかわかりません。