0

出于某种原因,我得到了一个“未解决的外部符号”错误,我只是不知道为什么..

它抱怨“ __snprintf ”、“ __sprintf ”和“ __vsnprintf ”,即使我什至没有使用它们。

编译器图片:

在此处输入图像描述

如您所见,我正在使用 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);
}

我已经尝试从地面重建解决方案,重新下载库,直接将其添加到链接器中......但没有。就是不行。。

项目配置(根据要求):

在此处输入图像描述

4

1 回答 1

0

请记住,D3DX9(和D3DX10D3DX11)和 DirectX SDK 都已弃用。请参阅MSDND3DX9VS 2010 是DirectX SDK官方支持的最后一个版本(2010 年 6 月)。一般来说,导入库应该可以工作,但静态库很可能不起作用。

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

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

此外,您错误地配置了包含/lib 路径,以将旧版 DirectX SDK 与 VS 2012 或更高版本附带的 Windows 8.x SDK 混合。有关正确的路径顺序,请参阅MSDN上的说明,这与您当前所拥有的相反

于 2015-11-05T02:24:40.963 回答