[英]Unresolved External Symbol error, C++ VS15 d3dx9 Library
由于某种原因,我收到了“无法解析的外部符号 ”错误,而我只是不知道为什么。
它抱怨“ __snprintf ”,“ __sprintf ”和“ __vsnprintf ”,即使我没有使用它们。
编译器图片:
如您所见,我正在使用d3dx9.lib,这些是我的include&库:
#include <Windows.h>
#include <iostream>
#include <stdio.h>
#include "d3d9.h"
#include "d3dx9.h"
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
我在以下位置使用printf的唯一代码:
void v_DrawText(int X, int Y, D3DCOLOR Color, ID3DXFont *font, const char* sText, ...)
{
char sText_[1024] = "";
va_list ap;
if (!sText || *sText == '\0')
return;
va_start(ap, sText);
_snprintf_s(sText_, 1024, 1023, sText, ap);
va_end(ap);
RECT Position = { X, Y, X + 500, Y + 50 };
font->DrawText(NULL, sText_, -1, &Position, DT_LEFT | DT_WORDBREAK, Color);
}
我已经尝试过从头开始重建解决方案,重新下载库,然后将其直接添加到链接器中。 只是行不通..
项目配置(根据要求):
请记住, D3DX9
(和D3DX10
, D3DX11
)和DirectX SDK均已弃用。 参见MSDN 。 VS 2010是D3DX9
与DirectX SDK正式支持的最新版本(2010年6月)。 通常,导入库应该起作用,但是静态库很可能不起作用。
请注意,DXERR.LIB不适用于VS 2015,因为CRT已更改。 有关详细信息,请参见此线程 。
您仍在使用2004年夏季开始的DirectX SDK 9.0b,该版本当时支持VS .NET 2002和VS .NET2003。如果仍然需要使用旧版D3DX9,请移至DirectX SDK(2010年6月)发行版。 看到这篇文章 。
另外,您还错误地配置了包含/库路径,以将旧版DirectX SDK与VS 2012或更高版本随附的Windows 8.x SDK混合使用。 有关正确的路径顺序,请参阅MSDN上的说明,这与当前的顺序相反 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.