我想用VC++構建一個非常複雜的開源項目。該項目由數十個庫和一個可執行文件組成,具體取決於這些庫。我可以問VC++鏈接器忽略未解析的外部?
對於一些原因,VC++鏈接器不希望看到這些庫和報告上的每個「未解析外部引用」的一個實現約40的功能,所以我不能鏈接。我不想浪費時間解決問題 - 這些功能可能永遠不會被調用。
我想只要問一下鏈接鏈接它認爲並插入一些合理的錯誤處理(如報告錯誤和終止程序),而不是缺少的功能。我怎樣才能做到這一點?
我想用VC++構建一個非常複雜的開源項目。該項目由數十個庫和一個可執行文件組成,具體取決於這些庫。我可以問VC++鏈接器忽略未解析的外部?
對於一些原因,VC++鏈接器不希望看到這些庫和報告上的每個「未解析外部引用」的一個實現約40的功能,所以我不能鏈接。我不想浪費時間解決問題 - 這些功能可能永遠不會被調用。
我想只要問一下鏈接鏈接它認爲並插入一些合理的錯誤處理(如報告錯誤和終止程序),而不是缺少的功能。我怎樣才能做到這一點?
可以使用/FORCE:UNRESOLVED
鏈接器選項。
該文檔中包含了相當低調的警告:
使用此選項時,可能 無法運行創建的文件。
在實踐中,不會出現錯誤處理 - 只是崩潰。
如果函數確實從未被調用過,那麼爲庫創建實際的庫(.lib文件)。那麼鏈接器將只從庫中提取需要的東西。
鏈接器的任務是解決所有的引用,所以我不認爲你會得到它插入錯誤處理代碼。
P.S.我要檢查的第一件事是看看C函數是否被編譯爲C++,導致丟失的符號。
如果他們從未被調用,請從您的項目中刪除引用。如果他們被調用,然後解決該死的問題。這裏沒有其他選擇。
+1爲PS。 .c文件的名稱與VisualStudio中的.cpp文件不同。根據您的設置,它們也可能使用不同的調用約定。 – 2010-02-24 14:31:51
那麼,有時候會被調用,但是當我使用這個程序的時候,這些路徑永遠不會被執行。所以鏈接器是正確的 - 它需要這個功能。我仍然希望它能夠生成可執行文件。無論如何。 – sharptooth 2010-02-26 15:56:09