【问题标题】:C++ - LNK2019 unresolved external symbol - Can't seem to find what I'm missingC++ - LNK2019 未解析的外部符号 - 似乎无法找到我所缺少的
【发布时间】:2013-09-06 13:55:55
【问题描述】:

我知道这是一个常见问题,我可以看到很多关于 LNK2019 的问题,但我终生无法找到我所缺少的。

我正在开发一个 C++ DirectX 项目,我想使用 DirectXTK 库 (Direct X Tool Kit)。我已将该项目包含在我的解决方案中,并且构建良好。

我还包含了我想在自己的项目中使用的 ScreenGrab.h 标头。 Intellisense 可以很好地从 ScreenGrab.h 中提取函数定义,因此我调用了 SaveDDSTextureToFile()

但是当我去构建项目时,我在 SaveDDSTextureToFile() 上收到 LNK2019 错误。 我假设这意味着它知道定义在哪里(在标题中)但找不到.obj或.lib中函数的实现,这样对吗?

我假设我需要告诉链接器这些文件在哪里?我尝试在 Properties->Configuration Settings->Linker->General->Additional Library Directories 中执行此操作,但仍然出现 LNK2019 错误。

有人知道我还缺少什么吗?

感谢您的宝贵时间。

【问题讨论】:

  • 您是否添加了 .lib 作为输入?您不仅需要指定它在哪里,还需要指定它是哪一个。
  • 您需要实现 SaveDDSTextureToFile 的实际 .c/.cpp 文件或库
  • 嗨,谢谢你们两位,在我发布问题并意识到我没有做的事情之后,我看到了链接器->输入选项卡。感谢您指出这一点,我最终在下面为其他人回答了我自己的问题。

标签: c++ visual-c++ linker directx


【解决方案1】:

愚蠢的是,我没有将库添加到链接器哎呀。

基本上对于忘记此步骤的其他人 - 在将目录添加到 Linker->General 后,转到 Linker->Input 并将 .lib 的名称添加到“附加依赖项” - 所以对我来说,我在此处输入“DirectXTK.lib”(不带引号)。

如果我没有将目录添加到 Linker->General,我也可以在此处键入“../folder1/folder2/folder-etc/DirectXTK.lib”,具体取决于我的项目所在的相对路径。

很抱歉浪费了人们的时间,我希望这对其他人有所帮助。

【讨论】:

    【解决方案2】:

    确保您的链接器->通用->附加库目录配置适用于所有配置,而不仅仅是“发布”或“调试”。尝试将静态库文件(取决于您使用的 Direct3D 版本)从 SDK 目录添加到您的项目中 - 如果它可以编译,那么您肯定是链接器配置有问题。

    【讨论】:

      猜你喜欢
      • 2012-12-17
      • 1970-01-01
      • 2015-08-26
      • 2011-08-09
      • 2014-11-07
      • 2013-06-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      相关资源
      最近更新 更多