首頁 > 後端開發 > C++ > 如何在不使用 __declspec(dllexport) 或 .def 檔案的情況下自動從 Visual Studio 中的 DLL 匯出所有符號?

如何在不使用 __declspec(dllexport) 或 .def 檔案的情況下自動從 Visual Studio 中的 DLL 匯出所有符號?

Patricia Arquette
發布: 2024-12-06 02:19:10
原創
605 人瀏覽過

How Can I Automatically Export All Symbols from a DLL in Visual Studio without Using __declspec(dllexport) or .def Files?

無需明確聲明即可自動匯出DLL 的符號

在Visual Studio 2005 中,您可以自動從DLL 匯出所有符號,而無需手動新增__declspec (dllexport) 屬性或建立.def 檔案。操作方法如下:

使用CMake(建議)

  1. 安裝最新開發版本的CMake (cmake-3.3.20150721-g9cd2f-win32-x86.或更高)。
  2. 建立 CMake 專案使用 CMakeLists.txt 檔案。
  3. 將下列行加入 CMakeLists.txt 檔案:
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
登入後複製
  1. 使用 CMake 產生 Visual Studio 專案 (cmake-gui )和

好處:

  • 此方法不需要在類別或函數中明確導出任何巨集。
  • 它無需手動建立 .def檔案。

注意:整個程式最佳化 (/GL) 不能與此方法一起使用。

使用物件檔案資訊建立.def 檔案

作為CMake 方法的替代方法,您可以使用以下命令手動建立.def 檔案步驟:

  1. 從要匯出的程式碼建立靜態庫。
  2. 使用 dumpbin /LINKERMEMBER 從靜態庫中提取導出。
  3. 解析輸出dumpbin 並建立一個 .def 檔案。
  4. 使用 .def 連結 DLL檔。

優點:

  • 允許對符號進行更精細的控制

缺點: >

    需要手動建立靜態函式庫、dumpbin解析、.def 檔案寫入。
  • 可能不如CMake 高效

其他提示:

    如果使用類別導出方法,請加入__declspec(dllexport)或extern "C" __declspec(dllexport)到類別或方法聲明。
  • 考慮使用 %2 而不是.def 檔案中的 __cdecl 是為了與舊版本的 Windows 相容。
  • 確保程式碼和 .def 檔案(如果手動建立)之間的名稱修飾設定一致。

以上是如何在不使用 __declspec(dllexport) 或 .def 檔案的情況下自動從 Visual Studio 中的 DLL 匯出所有符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板