2013-05-19 96 views
1

這似乎將是一個共同的問題使用的位置,但我似乎無法找到答案:找到連接由Visual Studio

有沒有辦法找到VS用來連接一個特定的庫鏈接時的特定功能?

我使用Visual Studio構建一個多項目解決方案。 我有一個解決方案(庫解決方案),可以生成一堆用於多個程序的.lib。其中一個庫是從Fortran代碼(英特爾Fortran 77編譯器)生成的,並強制使用大寫名稱。

我靜態這些庫鏈接到我建立(這恰好是在C++中我的應用程序的解決方案,用適當的「外部C」 S和原型。

我的問題是,我可以刪除生成一個特定函數的庫,和我的程序編譯愉快(好吧罰款)和鏈接(廢話是什麼!),所以我去每個庫在連接器 - >輸入 - >附加依賴,並做一個objdump的尋找函數(在fortran子程序中)名稱,它不會出現,我對所有的項目依賴關係做同樣的事情,並且仍然沒有骰子

如果我去改變庫(以及所有的函數調用和原型)到隨機的東西(如myFunction12345)並重新編譯和鏈接,一切都按我所期望的那樣工作,所以顯然有些東西正在鏈接,我無法找到。

FWIW我的函數名稱AIR

我在我還在學習如何找出正在使用VS什麼庫鏈接時解決我的具體問題不感興趣。另外,我想知道是否有一些鏈接器標誌可以引發警告,或者在鏈接時有多個定義的對象時出錯。

有什麼想法?

+0

當你說你的程序編譯好了,我假設你的意思是,有一個主要的,而不是該庫編譯OK C++程序。另外,我們在談論靜態庫或DLL? – cup

+0

如果編譯器將大寫名稱命名爲Fortran符號,它非常奇怪,並且不常見。你使用哪個編譯器? –

+0

@CUP:那麼,庫和C++程序(包含main)都會編譯。該庫編譯爲.lib文件,C++程序編譯並鏈接。這些庫的.lib(靜態鏈接)庫DLL文件不 – user1892929

回答

3

添加/詳細到鏈接器命令行附加選項。在結果輸出中,查找諸如「在xxxx中找到_AIR」的行。周圍的線條應該清楚地表明發生了什麼。

您可能必須使用相同的名稱正在從庫搜索路徑前進您打算庫中拉出,或者相應的符號也在默認庫定義的庫。

+0

或者鏈接器/常規/顯示進度,它做同樣的事情。 – cup

+0

這正是我期待的,謝謝!現在看起來很明顯。 – user1892929