私は問題を抱えており、ネット上で答えを見つけることができません。C# コードから C++ 関数を呼び出したい。C++ 関数は次のように宣言されます。
int read(InfoStruct *pInfo, int size, BOOL flag)
次の構造で
typedef struct
{
int ID;
char Name[20];
double value;
void *Pointer;
int time;
}InfoStruct;
私の c# コードでは、次のように書きました。
public unsafe struct InfoStruct
{
public Int32 ID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string Name;
public Double value;
public void *Pointer;
public Int32 time;
};
[DllImport("mydll.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern unsafe int read(out MeasurementInfoStruct[] pInfo, int size, bool flag);
コードを実行しようとしましたが、クラッシュするので、特に void* という構造を間違えたと思いますが、代わりに何を配置すればよいかわかりません。関数が構造体の配列を返すという事実もあり、おそらく私はそれを正しく呼び出していません。これで私を助けてもらえますか?どうもありがとう。