※ ChatGPTを利用し、要約された質問です(原文:DLLについて)
DLLについての勉強中に出てきた不明な部分
このQ&Aのポイント
現在APIの勉強中なのですが、DLLファイルのExportをDEFファイルにて行うようプログラムを行いました。
DEFファイルを使用して作成したDLLファイルの中身を確認したところ、EXPORT名がbeepになっていないように見えるのですが、これで正常なのでしょうか?
環境はVisual C++.NET 2005で、DEFファイルはビルド前に定義しました。
現在APIの勉強中なのですが不明な部分が出てきました。
今、単純な音を鳴らす関数beepをDLLファイルにExportするプログラムを作っているのですが、DLLファイルのExportをDEFファイルにて行うようプログラムを行いました。
DEFファイルの内容を以下に示します。
----beepll.def------
LIBRARY beepdll
EXPORTS
beep @3
このDEFファイルを用いて作成したbeepdll.dllファイルをDUMPBIN.EXEを使用して中身を見たところ次のように表示されました。
File Type: DLL
Section contains the following exports for beepdll.dll
00000000 characteristics
45B09596 time date stamp Fri Jan 19 18:55:34 2007
0.00 version
3 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
3 0 00001000 beep = ?beep@@YGXG@Z (void __stdcall beep(unsigned sho
rt))
Summary
1000 .data
1000 .rdata
1000 .reloc
1000 .rsrc
1000 .text
これを見ると確かに序数は"3"になっているのですがEXPORT名がbeepになっていないように見えるのですが、これで正常なのでしょうか?
環境は Visual C++.NET 2005です。
DEFファイルはビルド前に、[プロジェクト]→[---のプロパティ]→[構成プロパティ]→[リンカ]→[入力]→[モジュール定義ファイル]にて定義しました。
お礼
返信ありがとうございました。 この現象は単にmangleの結果でした。 c++の修飾を取りやめる extern"C"を関数の前に記述したところ、 正確にEXPORT名が 指定名 = _名前@[引数のバイト数] になりました。 ありがとうごじました^^