私は、構造体のJPINfoへのポインタをとるDLLにC++関数を持っています。この関数はサーバから受け取ったデータで満たされています。以下に見られる:C#の構造体へのポインタをC++ DLLに送信する
typedef struct JP
{
unsigned char type;
DWORD value;
} JP;
typedef struct JPInfo
{
JP jps[3];
_int16 ConT;
_int16 CallT;
unsigned char ret;
unsigned char count;
unsigned char JPOffset;
unsigned char JPPeriod;
} JPInfo;
機能がそうようDLLにエクスポートされる:
__declspec(dllexport) DWORD __stdcall GetJPInfo(JPInfo* jpi, DWORD time);
関数はJPInfo構造体へのポインタを取るを、IはC#で、この構造体を模倣することを試みた
私はタイプ「System.ExecutionEngineException」の未処理の例外を取得[DllImport("DLLImp.dll")]
unsafe public static extern int GetJP(ref JPInfo jpi, int time);
// then in main...
JPInfo jpi = new JPInfo;
GetJackpotValues(ref jpi, 4000);
:3210
私はそうのようなC#のから関数を呼び出すを試みます。私はJPInfo構造体にJP構造体の固定サイズの配列を持つことができないので、これにどのようにアプローチするのか分かりません。
ありがとうございました。
sieを明示的に指定しないでください。デフォルトのMarshallerはそれを実行します。 (サイズ= 23,5など) – Digvijay