none
C++からエクスポートしたDLLをVisual Basicで使用する場合 RRS feed

  • 質問

  • C++からエクスポートしたDLLをVisual Basicで使用するためDLLの作成方法を勉強中です。
    DLL から関数をエクスポートする方法に以下の2種類があるというのは理解しました。
      1.「def ファイルを使用する方法」
      2.「declspec(dllexport) キーワードを使用する方法」。
    気になったのは、MSDNのあるページに以下の記述があったことです。

     

    「Visual Basic で書かれたプログラムから DLL を呼び出す場合は、ここで示したエイリアスの

    手法を .def ファイル内で使用する必要があります。」

     

    これはVisual BasicからDLLを呼び出す場合は、「def ファイルを使用する方法」でエクスポート

    しなければいけないという意味でしょうか?

    もしそうであれば、「def ファイルを使用する方法」に専念したいと思っています。
    2008年6月25日 16:54

回答

  •  sanfrancisco さんからの引用

    これはVisual BasicからDLLを呼び出す場合は、「def ファイルを使用する方法」でエクスポート

    しなければいけないという意味でしょうか?

    必ずしもdefファイルを使用する必要はありませんが、変な名前(と思える文字列)でexportされることになるかもしれません。

     

    defファイルを使用せずにexportした場合、"_Function@4"とか、"_Function@4@@XYZ@@@AAAA"(実際は名前空間とかクラス名とか引数の型等によって文字列が生成される)とかCやC++特有の装飾名をAlias句あるいはEntryPoint属性で書く必要があります。

    それはExportテーブルを見ないと装飾名が分からないといった問題があるかもしれません。

    2008年6月25日 22:47
    モデレータ

すべての返信

  •  sanfrancisco さんからの引用

    これはVisual BasicからDLLを呼び出す場合は、「def ファイルを使用する方法」でエクスポート

    しなければいけないという意味でしょうか?

    必ずしもdefファイルを使用する必要はありませんが、変な名前(と思える文字列)でexportされることになるかもしれません。

     

    defファイルを使用せずにexportした場合、"_Function@4"とか、"_Function@4@@XYZ@@@AAAA"(実際は名前空間とかクラス名とか引数の型等によって文字列が生成される)とかCやC++特有の装飾名をAlias句あるいはEntryPoint属性で書く必要があります。

    それはExportテーブルを見ないと装飾名が分からないといった問題があるかもしれません。

    2008年6月25日 22:47
    モデレータ
  • Azuleanさん、いつも大変お世話になっております。

    今回も理解が進み、助かりました。

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

    2008年6月26日 2:26