ホームページ > バックエンド開発 > C++ > Visual Studio で DLL をビルドするときに、CMake はすべてのシンボルを自動的にエクスポートできますか?

Visual Studio で DLL をビルドするときに、CMake はすべてのシンボルを自動的にエクスポートできますか?

Susan Sarandon
リリース: 2024-11-27 07:54:09
オリジナル
360 人が閲覧しました

Can CMake Automatically Export All Symbols When Building a DLL in Visual Studio?

DLL の作成時にすべてのシンボルをエクスポートする

シナリオ

Visual Studio 2005 の目標は、DLL の作成時にすべてのシンボルを自動的にエクスポートすることです。 __declspec(dllexport) 注釈を手動で追加したり、.def ファイルを作成したりする必要はありません。これは可能ですか?

CMake による解決策

答え: はい、最新バージョンの CMake (バージョン 3.3.20150721-g9cd2f-win32- 以降) でこれを実現できます。 x86.exe以降)。この機能は現在開発ブランチにあり、将来のリリース バージョンに統合される予定です。

手順:

  1. CMake の入手: ダウンロード提供されたリンクから CMake の開発バージョンをダウンロードします。
  2. CMake を作成するプロジェクト: CMakeLists.txt ファイルに基づいて CMake を使用するようにプロジェクトを構成します。
  3. シンボルのエクスポートを有効にする: CMakeLists.txt ファイルに次の行を追加します。

    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
    ログイン後にコピー
  4. ビルドプロジェクト: CMake (cmake-gui) を使用して Visual Studio プロジェクトを作成し、コンパイルします。

注: このアプローチでは、プログラム全体の最適化 (/) を無効にする必要があります。 GL) コンパイル中に。

その他のアプローチ

1. __declspec(dllexport):

シンボルを明示的にエクスポートまたはインポートするには、クラス定義または関数定義の前に __declspec(dllexport) または __declspec(dllimport) を手動で追加します。

2.モジュール定義ファイル (.def) を作成します:

関数宣言を含む .def ファイルを作成するか、静的ライブラリからシンボルをエクスポートします。

CMake ソリューションの利点

  • 手動の注釈や .def を使用しないすべてのシンボルの自動エクスポートファイル。
  • さまざまなプラットフォーム用のビルド スクリプトを生成する CMake の機能によるクロスプラットフォーム互換性。
  • ビルド プロセスが簡素化され、手動介入の必要がなくなります。

以上がVisual Studio で DLL をビルドするときに、CMake はすべてのシンボルを自動的にエクスポートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート