C# プログラムから C++ ライブラリを呼び出す必要があります。署名が次のようなメソッドがあります。
int __stdcall meythodName(const char *c, struct TheirStruct[] s1, struct TheirStruct[] s2)
すべてのパラメーターは出力パラメーターです。
このメソッドを次のように呼び出そうとしています:
[DllImport("theirlib.dll", CallingConvention = CallingConvention.StdCall)]
extern static int meythodName(ref string c, ref TheirStruct[] s1, ref TheirStruct[] s2);
TheirStruct は次のようになります。
[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 13)]
public class TheirStruct
{
public int i;
public int j;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]
public string s;
}
theirStruct (PACKED でサイズが 13 バイト) は、dll マニュアルで次のように説明されています。
#define LEN 5
#define SIZE 50
struct TheirStruct
{
char c[LEN];
int i;
int j;
};
このメソッドを呼び出そうとすると、エラー コードが表示されずにアプリケーションが終了してしまいます。この問題について説明してもらえますか?