閱讀一個簡單地工程代碼,其中一個工程BaseCode是 static lib,另外一個工程RunBaseCode使用該lib,但在工程設置的「Linker\Input\AdditionalDependencies」 中並無添加對該lib的引用,而在「Linker\Command Line」中卻發現BaseCode.lib已經添加進來了,這是怎麼回事呢?html
首先懷疑是Solution中設置的 「Project Dependencies」編譯依賴,隱含的添加了lib,所以想把RunBaseCode對BaseCode的依賴去掉試試看。取消依賴時,卻發現取消不了,出現"The dependency was added by the project system and cannot be removed" 錯誤。那這個編譯依賴是在哪裏添加的呢?this
原來是在「Project References」中設置的。htm
右鍵\Properties\Common Properties\Framework and References\Add New Reference。blog
設置Reference後,該工程就自動加上了「Project Dependencies」。ci
那默認添加對BaseCode.lib的引用,是不是因爲設置了「Project Dependencies」呢?不是的,是因爲上面所述的設置「Reference」致使的。驗證的狀況以下:rem
1. 點擊「Remove Reference」去掉工程關聯後,默認的「Project Dependencies」也取消掉了。這時,手動添加「Project Dependencies」,發現「Linker\Command Line」中沒有自動添加BaseCode.lib。get
2. 將上一步驟中的「Project Dependencies」去掉,而後「右鍵\Properties\Common Properties\Framework and References\Add New Reference」,這時「Linker\Command Line」中自動添加了BaseCode.lib。it
Referencesio
【1】Error while removing project dependency in VS2010 (http://stackoverflow.com/questions/12818315/error-while-removing-project-dependency-in-vs2010)編譯