無需明確聲明即可自動匯出DLL 的符號
在Visual Studio 2005 中,您可以自動從DLL 匯出所有符號,而無需手動新增__declspec (dllexport) 屬性或建立.def 檔案。操作方法如下:
使用CMake(建議)
- 安裝最新開發版本的CMake (cmake-3.3.20150721-g9cd2f-win32-x86.或更高)。
- 建立 CMake 專案使用 CMakeLists.txt 檔案。
- 將下列行加入 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檔。
優點:
缺點: >
需要手動建立靜態函式庫、dumpbin解析、.def 檔案寫入。 - 可能不如CMake 高效
-
其他提示:
如果使用類別導出方法,請加入__declspec(dllexport)或extern "C" __declspec(dllexport)到類別或方法聲明。 - 考慮使用 %2 而不是.def 檔案中的 __cdecl 是為了與舊版本的 Windows 相容。
- 確保程式碼和 .def 檔案(如果手動建立)之間的名稱修飾設定一致。
-
以上是如何在不使用 __declspec(dllexport) 或 .def 檔案的情況下自動從 Visual Studio 中的 DLL 匯出所有符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!