天天看點

warning LNK4042: The same object file was specified more than once

Background: Libjingle移稙到VS2010下編譯。按照Scons給出的工程結建構立了5個lib工程,以及一個call工程。編譯jingle時出現warning LNK4042。開始我不管,後來發現編譯call出錯,凡是在constants.h/constants.cc中定義的變量都不能用,會出現LNK2019 error(出現這個error說明在産生lib的工程中,有一些變量被聲明,但沒有被定義,也就是說有一些檔案沒有被編譯。見博文:http://blog.sina.com.cn/s/blog_872c0f460100zlrn.html)。

解決:原文位址:Visual Studio 2010's strange “warning LNK4042”

change the value under C/C++ -> Output Files -> "Object File Name" to be the following:

$(IntDir)/%(RelativeDir)/

問題的原因是代碼結構中出現了同名的檔案,雖然在不同的檔案夾,但VS2008以後的版本都預設忽略檔案夾結構,也就是說所有的檔案在編譯時被認為是在一個檔案夾裡。而同名的檔案自然會被忽略而不被編譯。

最後用一句話總結:永遠不要忽略任何Link的warning!