我有一堆文件,它們被編譯到鏈接到各種項目的庫中,但大多數項目只需要相對較小的一部分。所以我需要將它拆分成圖層。檢查靜態庫是否定義了所有符號
爲了做到這一點,我想檢查下層不依賴於更高層的任何東西。在Linux上,我只是簡單地將這些庫共享並將-Wl,--no-undefined
傳遞給鏈接。但我需要在Windows上執行此操作,因爲動態庫需要顯式導出,並且源代碼沒有爲此準備好。
我也可以爲每個圖層準備一個單元測試,並在鏈接期間彈出未定義的符號。然而,我只對小部分類進行單元測試,即使添加它們,如果添加了某些東西但未測試它們,它們仍然無法捕獲。
那麼有沒有其他方法來檢查靜態庫不需要任何符號,除了從指定的其他庫的集合?我可以使用Visual C++ 9.0(2008)或MinGW。
-no-undefined是link.exe的默認值,它很不清楚爲什麼你需要以不同的方式做到這一點。您不需要在源代碼中顯式導出,只需要.def文件中的列表就足夠了。 – 2013-05-07 14:11:56
@HansPassant:靜態庫不是用'link.exe'構建的,我相信我提到了爲什麼我不能讓它們在Windows上共享(dll)。 – 2013-05-08 20:00:53