アンマネージ C++ DLL で関数を呼び出そうとしています。stackoverflow の投稿を検索しています。
.h ファイルで次のように宣言します。
extern int SomeDLLMethod(const char **data, int *count);
データは文字列です
C# で次のように宣言しました。
[DllImport("mydll.dll", CallingConvention = CallingConvention.Cdecl)]
static extern int SomeDLLMethod(IntPtr data, ref int count);
次に、次のように C# から呼び出すことができます。
unsafe
{
fixed (byte* buffer = new byte[MAX_LENGTH])
{
IntPtr ptr = new IntPtr(buffer);
int count = 0;
var retVal = SomeDLLMethod(ptr, ref count);
var dataString = Marshal.PtrToStringAuto(ptr);
Console.WriteLine(dataString);
}
}
呼び出しは成功し、バッファにはカウントとデータがありますが、この値を C# 文字列に戻すにはどうすればよいですか?
マーシャルメソッドは私にゴミを与えています