簡體   English   中英

我可以要求VC ++鏈接器忽略未解析的外部嗎?

[英]Can I ask VC++ linker to ignore unresolved externals?

我正在嘗試使用VC ++構建一個非常復雜的開源項目。 該項目由數十個庫和一個可執行文件組成,具體取決於這些庫。

由於某些原因,VC ++鏈接器不希望在其中一個庫中看到大約40個函數,並且每個庫都報告“未解析的外部引用”,所以我無法鏈接。 我不想浪費時間解決問題 - 這些功能可能永遠不會被調用。

我想讓鏈接器鏈接它看到的內容並插入一些合理的錯誤處理(比如報告錯誤並終止程序)而不是丟失函數。 我怎樣才能做到這一點?

您可以使用/FORCE:UNRESOLVED鏈接器選項。

該文檔包含相當低調的警告:

使用此選項創建的文件可能無法按預期運行。

在實踐中,不會有錯誤處理 - 只是崩潰。

如果真正從未調用過函數,則為庫創建實際庫(.lib文件)。 然后鏈接器將僅從庫中提取所需內容。

鏈接器的工作是解析所有引用,所以我認為你不會讓它插入錯誤處理代碼。

PS我要檢查的第一件事是看看C函數是否被編譯為C ++,導致缺少符號。

如果它們從未被調用過,請從項目中刪除引用。 如果他們被召喚,那么解決該死的問題。 這里沒有其他選擇。

有一些值得注意的例外,但大多數OpenSource項目並非設計為在VisualStudio下構建。

通常對於Windows端口,最好使用cygwinmingw系統。 我的建議通常是mingw,除非程序使用很多Unix OSey調用,如管道和信號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM