2010-02-24 51 views
11

我想用VC++構建一個非常複雜的開源項目。該項目由數十個庫和一個可執行文件組成,具體取決於這些庫。我可以問VC++鏈接器忽略未解析的外部?

對於一些原因,VC++鏈接器不希望看到這些庫和報告上的每個「未解析外部引用」的一個實現約40的功能,所以我不能鏈接。我不想浪費時間解決問題 - 這些功能可能永遠不會被調用。

我想只要問一下鏈接鏈接它認爲並插入一些合理的錯誤處理(如報告錯誤和終止程序),而不是缺少的功能。我怎樣才能做到這一點?

回答

13

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

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

使用此選項時,可能 無法運行創建的文件。

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

6

如果函數確實從未被調用過,那麼爲庫創建實際的庫(.lib文件)。那麼鏈接器將只從庫中提取需要的東西。

鏈接器的任務是解決所有的引用,所以我不認爲你會得到它插入錯誤處理代碼。

P.S.我要檢查的第一件事是看看C函數是否被編譯爲C++,導致丟失的符號。

+0

+1爲PS。 .c文件的名稱與VisualStudio中的.cpp文件不同。根據您的設置,它們也可能使用不同的調用約定。 – 2010-02-24 14:31:51

+0

那麼,有時候會被調用,但是當我使用這個程序的時候,這些路徑永遠不會被執行。所以鏈接器是正確的 - 它需要這個功能。我仍然希望它能夠生成可執行文件。無論如何。 – sharptooth 2010-02-26 15:56:09

5

如果他們從未被調用,請從您的項目中刪除引用。如果他們被調用,然後解決該死的問題。這裏沒有其他選擇。

1

有一些明顯的例外,但大多數開放源代碼項目都沒有設計的VisualStudio下待建。

一般爲Windows端口,你最好使用兩種cygwinmingw系統。我的建議通常用於mingw,除非程序使用很多Unix OSey調用,比如管道和信號。

相關問題