我正在尝试编译与DirectX 10一起使用的旧程序。所用库的完整列表:
#pragma comment(lib, "d3d10.lib")
#pragma comment(lib, "d3dx10.lib")
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "dxerr.lib")
#pragma comment( lib, "dxguid.lib" )
链接错误:
dxerr.lib(dxerrw.obj):错误LNK2019:未解析的外部符号_vsnwprintf在函数&#34中引用; long __cdecl StringVPrintfWorkerW(unsigned short *,unsigned __int64,unsigned __int64 *,unsigned short const *,char *)& #34; (?StringVPrintfWorkerW @@ @ YAJPEAG_KPEA_KPEBGPEAD Z)
答案 0 :(得分:1)
您使用的是哪个版本的legacy DirectX SDK?来自不同版本的Visual C ++编译器的静态库*通常不兼容,所以我猜你使用的是不再支持VS 2005的DirectX SDK - 我相信2010年2月的DXSDK是2010年6月的最后一个DXSDK支持VS 2008和VS 2010。
您也可以尝试构建自己的DXERR或迁移到较新版本的Visual C ++。
D3D10
,D3DX10
和DXGI
方面遇到问题的原因。 DXGUID
是一个静态库,但它只包含数据段内容,所以它往往不会遇到混合C运行时版本的问题。另请参阅Where is the DirectX SDK (2013 Edition)?,DirectX SDK Tools Catalog,Living without D3DX, DirectX SDKs of a certain age,DirectX SDK Samples Catalog