- - PR -
VC++.NET2003によるdllの作成
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-23 16:01
初めまして、Chackeyといいます。
最近、dllについて、困った事になっています。 VC++.NET2003で、ビルドしたdllが、使えません. LoadLibraryで、読み込むことは出来るのですが、 GetProcAddressで、関数のポインタを取得することが出来ません。 これと、同じ現象が、VC++6でもありましたが、 その場合は、.defファイルを、プロジェクトに含めることにより、 解決しました。 よって、恐らく、VC++.NET2003で、ビルドしたdllは、 exportされていないものと思われます。 単純なことかもしれませんが、 どなたか、良い知恵を拝借させて頂きたいと思います。 ※注1.__declspec(dllexport)を、使用しています。 ※注2.dumpbin /exports の結果は当てにならないようです。 ※注3.VC++6で、作成したプロジェクトを、VC++.NET2003に、 変換した場合は、うまくいきます。 | ||||
|
投稿日時: 2005-02-23 20:32
同じことを Visual Studio .NET 2003 でもやればいいのでは? __declspec(dllexport) で関数をエクスポートすると関数名が修飾されるため、ソースコード上で目にしている名前で GetProcAddress() しても関数アドレスが取得できないのです。 これを解決するには .def ファイルを使って、関数のエクスポート名を明示的に指定します。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-02-24 07:49
早速、回答を頂き、ありがとうございます。
.defファイルについてですが, VC++.NET2003は、.defファイルをプロジェクトに含んでも、 駄目なのです。 ソースコード、及び.defファイルは、VC++6の物と、 まったく同一にも関わらず、関数が読み込めないのです。 | ||||
|
投稿日時: 2005-02-24 08:46
プロジェクト設定のどこか(リンカのあたりかな?)で、.def ファイル名を明示的に指定することが可能なので、指定してみるとか。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-02-24 12:15
引用:--------------------------------------------------------------------------
プロジェクト設定のどこか(リンカのあたりかな?)で、.def ファイル名を明示的に指定することが可能なので、指定してみるとか。 -------------------------------------------------------------------------------- ひどりさんの指示に従ってやってみました。 プロジェクト>プロパティ>リンカ>入力>モジュール定義ファイル のところで、編集を選択後、目的の.defファイルを指定しました。 すると・・・うまくいきました!! 大変、お手数をおかけしました。 どうもありがとうございました!! |
1