說明:在VS2015上編譯DirectX提供的sample時遇到了如下錯誤提示
LNK2001 無法解析的外部符號 __vsnwprintf SimpleSample11 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D11\SimpleSample11\dxerr.lib(dxerrw.obj)
遂將網上查到的部分資料總結如下
解決方案有兩種:
1、直接在項目的鏈接庫--》輸入--》附加依賴項中添加 legacy_stdio_definitions.lib
2、在報錯的源文件中添加如下編譯預處理指令
#pragma comment(lib, "legacy_stdio_definitions.lib")
報錯原因
vs2015設計將許多原來的標准庫改為內聯方式,而內聯函數對dll或lib來說是不可見的,因而沒有可以鏈接的標准庫文件,所以要專門添加標准庫文件來鏈接標准庫中的函數,也就是 legacy_stdio_definitions.lib 。有很多Windows 8 SDK依賴於這些在新的運行庫中已經內聯化的方法,而目前看來使用 legacy_stdio_definitions.lib 能夠彌補大多數該更改遺留下的問題。來自Microsoft的工作人員稱,他們會在最終的VS2015發行版中更新Windows SDK以徹底解決這一問題。
