0

関数をエクスポートする DLL を Delphi で作成しました。動的リンク (LoadLibrary() API 呼び出し) を使用せずに、これらの関数を C++ プログラムで使用したいと考えています。

「インポート」宣言は次のようになります

extern "C" int __stdcall getVersionNumber();

私は主に、Windows 実行可能ファイルを作成する Bloodshed Dev-C++ を使用しています。しかし、「STATMONDLL32.dll」から関数「getVersionNumber」をインポートする必要があることをコンパイラに伝える方法がわかりません。

問題をグーグルで検索するのに何時間も費やした後、結果はありませんでした(Delphiでコンパイルしていない.aファイルと.libファイルについて書かれた奇妙なものだけがありました...)VC ++もインストールしましたが、そこにも、特定の DLL を使用するようにコンパイラに指示する方法が見つかりませんでした。

この DLL 用に DEF ファイルを作成しました - Dev-C++ や VC++ にそれを使用するように指示するにはどうすればよいですか? (Dev-C++ を推奨)

// 編集: Delphi は装飾されていないシンボルを作成しています。シンボルはまさに「getVersionNumber」です。

装飾用のエイリアスを使用して、次の DEF ファイルを作成しました。

LIBRARY   STATMONDLL32
EXPORTS
  getVersionNumberA = _getVersionNumberA@0

VC++ "lib.exe" で *.lib ファイルを作成しました。

lib.exe /DEF:StatMonDll32.def /OUT:StatMonDll32.lib

lib を VC++ リンカ設定に含めました。

しかし、VC++ は、外部シンボル _getVersionNumberA@0 を解決できないことを教えてくれます。助けてください!

// 編集: ここに DLL をアップロードしました: http://www.viathinksoft.de/temp/StatMonDll32.dll . VC++ でシンボル getVersionNumberA にアクセスできますか? 私は6日以来解決策を探しています:'-(

よろしくお願いします

ダニエル・マーシャル

4

1 に答える 1