繁体   English   中英

未解决的外部符号错误,C ++ VS15 d3dx9库

[英]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 (和D3DX10D3DX11 )和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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM