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

时间:2015-11-02 20:21:26

标签: c++ visual-studio-2015 unresolved-external lnk2001 d3dx

出于某种原因,我得到了一个" 未解析的外部符号"错误,我只是无法弄清楚原因..

它抱怨" __ snprintf "," __ sprintf "和" __ vsnprintf "即使我甚至没有使用那些..

编译器图片:

enter image description here

如您所见,我正在使用d3dx9.lib 这些是我的包括&库:

#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);
}

我已经尝试过从地面重建解决方案,重新加载库,直接将它添加到链接器..但没有。刚赢了工作..

项目配置(根据要求):

enter image description here

1 个答案:

答案 0 :(得分:0)

请注意,D3DX9(以及D3DX10D3DX11)和DirectX SDK均已弃用。见MSDN。 VS 2010是D3DX9使用DirectX SDK(2010年6月)正式支持的最后一个版本。通常,导入库应该可以工作,但静态库很可能无法工作。

  

请注意,DXERR.LIB不适用于VS 2015,因为CRT已更改。有关详细信息,请参阅this thread

您仍在使用2004年夏季的DirectX SDK 9.0b,它当时支持VS .NET 2002和VS .NET 2003.如果您仍需要使用旧版D3DX9,请转到DirectX SDK(2010年6月)版本。请参阅this post

此外,您还没有正确配置include / lib路径,以便将旧版DirectX SDK与VS 2012或更高版本附带的Windows 8.x SDK混合使用。请参阅MSDN上的说明,了解正确的路径顺序,即当前的反向