自動匯出DLL 中的所有符號,無需巨集或.def 檔案
在Visual Studio 2005 中,您可以從DLL 匯出所有符號無需手動新增__declspec(dllexport) 或建立.def 檔案。這是透過以下步驟實現的:
使用CMake(建議)
- 安裝CMake 版本3.3.20150721-g9cd2f 或更高版本,其中包括「匯出全部”功能。
- 新增行將(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) 設定為您的 CMakeLists.txt 檔案。
- 使用 CMake 建立 Visual Studio 專案。
- 編譯項目,所有符號都會自動匯出。
注意:使用此方法時,請確保 /GL (整個程式最佳化)未啟用。
解析 .obj 檔案
- 建立一個程式來解析 .obj 檔案並提取匯出的符號。
- 收集呼叫約定、符號欄位和 extern/static 等資訊資訊。
- 使用提取的符號產生 .def 檔案。
- 使用 .def 檔案連結 DLL。
雖然此方法需要額外的工作,但它提供解析 .obj 檔案的彈性。
其他提示
- 對 C 函數使用 __declspec(dllexport) 或 __cdecl 導出巨集來消除名稱修改。
- 使用靜態庫匯出符號,然後解析和提取它們在 .def 檔案中使用。
以上是如何在不使用巨集或 .def 檔案的情況下從 Visual Studio 中的 DLL 匯出所有符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!