首頁  >  文章  >  後端開發  >  如何在不使用巨集或 .def 檔案的情況下從 Visual Studio 中的 DLL 匯出所有符號?

如何在不使用巨集或 .def 檔案的情況下從 Visual Studio 中的 DLL 匯出所有符號?

Patricia Arquette
Patricia Arquette原創
2024-11-25 22:48:10842瀏覽

How Can I Export All Symbols from a DLL in Visual Studio Without Using Macros or .def Files?

自動匯出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中文網其他相關文章!

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