首頁 >後端開發 >C++ >在 Visual Studio 中建置 DLL 時,CMake 可以自動匯出所有符號嗎?

在 Visual Studio 中建置 DLL 時,CMake 可以自動匯出所有符號嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-27 07:54:09376瀏覽

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. 建置項目:
🎜>建立Visual Studio在CMake (cmake-gui) 的幫助下建立專案並編譯它。

注意:

此方法需要在編譯時停用整個程式最佳化 (/GL)。

其他方法

1.使用__declspec(dllexport):

在類別或函數定義前手動加入__declspec(dllexport) 或_ _declspec(dllimport) 來明確匯出或匯入符號。

2.建立模組定義檔 (.def):

編寫包含函數宣告或從靜態函式庫匯出符號的 .def 檔案。

    CMake 解決方案的優點
  • 自動導出所有符號,無需手動註釋或.def
  • 跨平台兼容性,因為CMake 能夠為不同平台生成腳本。
簡化建造過程,無需手動幹預。

以上是在 Visual Studio 中建置 DLL 時,CMake 可以自動匯出所有符號嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn