|
分類:[C#]
分類:[C#]
以下のような、アンマネージのDLL関数があり、それをC#で使いたくDllImportを使いましたが、 実際に使用するにあたって、型の不一致によるビルドエラーが発生しました。
【アンマネージDLL関数】 LPBYTE GetImageAlloc(INT iSize); INT GetImageData(LPBYTE pbBuffer, INT iSize);
【C#】 [DllImport("hogehoge.dll")] extern static IntPtr GetImageAlloc(int size); [DllImport("hogehoge.dll")] extern static int GetImageData([In, Out] byte[] buffer, int size);
int size = 100; IntPtr buffer = GetImageAlloc(size); GetImageData(buffer, size); // ← 方の不一致によるエラー
マーシャリングについて、MSDNで検索したつもりですが、解決方法が見つかりません。 GetImageData(???, size) ???の部分はどのように記述すればよいのでしょうか? それとも別の部分で間違った記述を行なっているのでしょうか?
試しに、以下のように変更するとビルドエラーも発生せずに、 期待した値がbufferに格納されていることを確認しました。 しかし、アンマネージでの宣言を変えてしまっている気がして。。。
[DllImport("hogehoge.dll")] public static extern int GetImageData(IntPtr buffer, int size);
どうか、宜しくお願いします。
|