C#よりC/C++で作成したDLLを呼び出す必要があります。
C/C++よりDLLを呼び出す場合は、あらかじめバッファーを確保した構造体配列を定義して呼び出し、結果を同じ構造体で取得できます。構造体一つ一つには文字列の上限をセットする必要があります。
この場合の、C#からC/C++のDLLをどうやって呼び出せばデータを取得できるのでしょうか?
C/C++のDLL struct Test { int nLen ; // (I) 最大読み込みサイズ char *lpszWord ; // (O) 読み込まれた文字列 } // 呼出形式 int GetWord(int nData, Test typDmy[]);
バッファーを確保した構造体を渡すとありますが、メモリアロケータは何を使用しているのですか?
呼び出し側で確保しないといけないなら、どのWinAPIで確保・解放するかを仕様で定めておくか(例えばCoTaskMemAlloc,CoTaskMemFree)、DLL側でアロケーション・解放用関数を用意しておく必要があります。
DLL側は解放できませんので、呼び出し側で確保する必要があります。
確保方法も含めて解答いただけませんでしょうか?
よく考えたら、DLL側で解放しないので最初のコメントは関係ありませんでした。最初のコメントは無視してください。
回答1件
あなたの回答
tips
プレビュー