ブックマーク / www2u.biglobe.ne.jp/~kaduhiko (2)

  • ネイティブ DLL の関数を呼び出したい,の巻

    ネイティブ DLL の関数を呼び出したい,の巻 2003/11/17 新規 唐突ですが、以下のサイトが非常に有用です。 Win32 APIやDLL関数を呼び出すには? Win32 APIやDLL関数に文字列や文字列バッファを渡すには? Win32 APIやDLL関数に構造体を渡すには? ネイティブ(Win32)DLL で定義された関数を呼び出すのは(引数がなければ)簡単で、すぐにできます。 ですが、その DLL が一体いつ読み込まれているのかは不明です。 そもそも、VC++ ではこんな感じで DLL をロードしてると思います。 LoadLibrary() 関数で DLL を読み込む 自動的に対象 DLL の DllMain() 関数(引数:DLL_PROCESS_ATTACH)が呼ばれる 最初の手順で得られる DLL のインスタンスを使って、任意の関数を呼ぶ DLL が不要になったら、Fr

  • 複雑な引数付きでネイティブ DLL の関数を呼び出したい,の巻

    複雑な引数付きでネイティブ DLL の関数を呼び出したい,の巻 2003/11/17 新規 以下のサイトも参考にしてください。 Win32 APIやDLL関数を呼び出すには? Win32 APIやDLL関数に文字列や文字列バッファを渡すには? Win32 APIやDLL関数に構造体を渡すには? C/C++ 言語で作られた DLL の関数に引数として構造体を渡すとき、 その構造体のメンバに構造体ポインタが含まれていた場合どうすれば良いでしょうか? ポイントは 構造体ポインタは IntPtr 構造体で扱うこと 事前に必要サイズ分だけメモリ確保すること IntPtr 構造体から目的の構造体配列へはマーシャリングできないので、個々の構造体として取り出すこと 使い終わったら確保したメモリを開放すること という感じです。 以下に、サンプルを示します。 STRUCT_A 構造体は以下のように、別の構造体

  • 1