2
我正在嘗試構建libxml2
庫,VS 2012編譯並鏈接到DDK 7
頭和庫。與VS 2005它建立罰款,但VS 2012,我得到一個鏈接器錯誤。上產生的符號的仔細檢查 -鏈接器錯誤(VS 2005 VS VS 2012)
2005年VS,
Found __imp___vsnprintf
Referenced in error.obj
Referenced in xmlreader.obj
Referenced in xmlwriter.obj
Referenced in xmlstring.obj
Loaded msvcrt.lib(msvcrt.dll)
上VS 2012,
error.obj : error LNK2019: unresolved external symbol __imp__vsnprintf
referencedin function ___xmlRaiseError
xmlreader.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlwriter.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlstring.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
__imp__vsnprintf
,__imp___vsnprintf
上VS 2012和分別用於相同功能的VS 2005(請注意在VS 2005中的vsnprintf
之前的額外_
)。我在構建日誌中查看了VS 2005和VS 2012的編譯器和鏈接器選項。兩者都是一樣的。通過傳遞給編譯器的showIncludes
選項,我可以看到在VS 2005和VS 2012上用於源文件的標頭完全相同。
爲什麼VS 2012中的符號生成有所不同?如何通過編譯和鏈接缺省頭文件和庫來解決問題?
謝謝。
您是否檢查過所有庫是使用相同的RuntimeLibrary(DLL,MT/ST,Debug/Release)參數構建的? 另外,您正在鏈接的是什麼版本的MSVCRT.lib? –
@MichaelSh使用'/ MD','/ D NDEBUG'進行編譯。 'DDK 7/lib/wxp'中有'msvcrt.lib'。 – Mahesh
嘗試從安裝VS2012的文件夾中使用msvcrt.lib –