【问题标题】:Unresolved External Symbol error, C++ VS15 d3dx9 Library未解决的外部符号错误,C++ VS15 d3dx9 库
【发布时间】:2023-03-05 03:36:01
【问题描述】:

由于某种原因,我收到了“无法解析的外部符号”错误,我就是不知道为什么..

它抱怨“__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);
}

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

项目配置(根据要求):

【问题讨论】:

  • 请显示您的项目配置。
  • 那个 SDK 目录看起来很糟糕,%28。尝试将其更改为Program Files (x86)。如果您在启动新项目时遇到同样的问题,那么您需要修复您的 SDK 安装。
  • 看起来它没有链接到正确的库。它是否链接到 msc++ 运行时?
  • 是的。 @DTSCode
  • 没有任何区别。 @MicroVirus

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


【解决方案1】:

请记住,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 上的说明以了解正确的路径顺序,这是您当前所拥有的反向

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2011-09-03
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多