none
C++(アンマネージ)のDLL呼び出し RRS feed

  • 質問

  • C++(アンマネージ)で作られたDLLを呼び出したいと考えています。

    絶対パスを指定してDllImport属性で呼び出せていることは確認済みです。

    しかし、実際には使用したいDLLへのパスは固定ではありません。

    どうやって呼び出したら良いでしょうか?(例えばマイドキュメント直下にあるDLLなど)

    2007年7月9日 7:07

すべての返信

  • .NET 2.0 なら、LoadLibrary / GetProcAddress から Marshal.GetDelegateForFunctionPointer を使えばデリゲートが手に入ります。

    .NET 1.1 以前なら、.NET 上で関数ポインタを直接デリゲートに変換することはできないため、上記の処理をやらせるネイティブの DLL を作成し、それを DllImport する形になるでしょう(引数としてデリゲートを指定すれば、自動的に関数ポインタをマーシャリングしてくれます)。

    [訂正]

    .NET 1.1 以前の場合、C# からは関数ポインタに対して手の出しようがありませんでしたね。マーシャリングもしてくれません。

    Managed C++ を使用してラッピングする必要があります。

    [/訂正]

     

    あんまり見たくない構成ですが。

    2007年7月9日 8:29
  • .NET2.0ですので、Marshal.GetDelegateForFunctionPointerで対応できました。

    ありがとうございました。

     

    2007年7月11日 6:04