明示的な宣言を使用しない DLL の自動シンボル エクスポート
Visual Studio 2005 では、__declspec を手動で追加せずに、DLL からすべてのシンボルを自動的にエクスポートできます。 (dllexport) 属性または .def ファイルの作成。方法は次のとおりです。
CMake の使用 (推奨)
- CMake の最新開発バージョン (cmake-3.3.20150721-g9cd2f-win32-x86.exe) をインストールします。
- を作成します。 CMakeLists.txt ファイルを使用した CMake プロジェクト。
- 次の行を CMakeLists.txt ファイルに追加します。
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
- CMake を使用して Visual Studio プロジェクトを生成します (cmake) -gui)とコンパイル.
利点:
- このメソッドは、クラスまたは関数で明示的なエクスポート マクロを必要としません。
- .def を手動で作成する必要がなくなります。ファイル。
注: プログラム全体の最適化 (/GL) は、このアプローチでは使用できません。
オブジェクト ファイル情報を含む .def ファイルの作成
CMake アプローチの代わりに、.def ファイルを手動で作成できます。次の手順を使用します。
- エクスポートするコードから静的ライブラリを作成します。
- dumpbin /LINKERMEMBER を使用して、静的ライブラリからエクスポートを抽出します。
- dumpbin の出力を解析し、.def ファイルを作成します。
- .def を使用して DLL をリンクします。 file.
利点:
欠点:
- が必要です静的ライブラリの手動作成、dumpbin 解析、および .def ファイルの書き込み。
- CMake アプローチほど効率的ではない可能性があります。
追加のヒント:
- クラス エクスポート アプローチを使用する場合は、__declspec(dllexport) または extern を追加します。 "C" __declspec(dllexport) をクラスまたはメソッド宣言に追加します。
- 古いバージョンの Windows との互換性を確保するために、.def ファイルで __cdecl の代わりに %2 を使用することを検討してください。
- 名前がマングリング設定は、コードと .def ファイルの間で一貫しています (手動で作成された場合)。
以上が__declspec(dllexport) または .def ファイルを使用せずに、Visual Studio の DLL からすべてのシンボルを自動的にエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。