2014-03-05 75 views
3

當經歷的"Walkthrough: Creating and Using a Static Library (C++)"他們通過「參考」下VS2010「框架和引用」與「鏈接>輸入」

"Project Properties > Common Properties > Framework and References > Add New Reference" 

引用靜態庫這只是鏈接是在圖書館的便捷方式相同的解決方案文件?您可以通過鏈接器選項指向庫來執行相同的過程?

"Project Properties > Linker > General & Input 

所以問題是,在鏈接過程中是否有任何區別?

enter image description here

回答

4

它是使用鏈接器+輸入,超越是多了很多「視覺」和不易出錯,它也會影響項目的生成順序不同。在一個好的方法中,這可以確保在必要時在客戶端項目之前構建靜態lib項目。

VS支持並行構建,並且如果項目之間沒有依賴關係,將同時啓動多個構建。如果實際上有一個項目和一個依賴項目的構建速度稍慢,那麼這可能會失敗。還有另一種顯式影響構建順序的方法,即Project + Project Dependencies。只有當VS無法自行解決時纔有必要。

+0

感謝您的回答,但對我而言,參考文獻確保某些庫是在應用程序之前構建的,而不是問兩個概念之間的過程是否相同?引用和鏈接器輸入是否也在做同樣的事情? – user1767754

+1

是的,它只是在兩種情況下都將構建輸出添加到鏈接器命令中,沒有什麼奇特的。 –

2

一個巨大VS2010「框架和參考」的挫折:這是一個解決方案屬性即使項目文件(vcxproj)裏面寫。只有在解決方案中添加的引用才能解決。根據我的經驗,當您需要在解決方案之間共享項目時,奇怪的鏈接錯誤開始彈出。大多數時候缺少引用,這可能來自不同的配置(64位編譯工作正常,說缺少32位依賴關係 - 保證「wtf ??」)。

因此,如果您在解決方案A中有3個引用的項目,要在解決方案B中添加該項目,則還需要添加3個引用的項目,因爲它位於A上,因此將3個引用設置爲A和與鏈接到特定庫相比,您的解決方案中有3個額外項目的所有開銷。

+0

我同意在多個解決方案中鏈接項目時,鏈接器+輸入應優於「框架和參考」。我目前正在經歷將一個170項目解決方案分解爲兩個的痛苦,我真的希望沒有人曾經使用過「框架和參考」。 – JDiMatteo