错误 LNK2001:未解析的外部符号(无法加载 SFML 库的每个静态成员)

error LNK2001: unresolved external symbol (every static member of SFML library can't be loaded)

所以,当我尝试使用 SFML 库的任何静态成员时遇到问题,例如 sf::RenderState::Defaultsf::Color::Blue

error LNK2001: 未解析的外部符号“public: static class sf::RenderStates const sf::RenderStates::Default” (?Default@RenderStates@sf@@2V12@ B)

但是当我评论行时,我可以访问 sf::window(它被创建,但不能绘制任何东西,因为 sf::Drawblesf::RenderState::Default 作为标准参数)。

我在 Visual Studio(我有 VS19)的解决方案属性中检查了所有内容,包括链接器和编译器。

P.S。我使用最新版本的 SFML (2.5.1) 和 Visual C++20.

感谢您的帮助。

在这种情况下,我将采取的故障排除步骤从最简单到相反。

  1. 如果我查看sf::RenderState::Default的声明,能找到吗?
  2. 如果我创建一个仅使用此功能的新项目,错误是否仍然存在?
  3. 如果我重新进行链接和目录搜索,问题是否得到解决?
  4. 我有与我的编译器兼容的版本吗?

此外,您提供的有关环境的信息量不足以推测可能是什么问题。它可能对 post 你的 SFML 版本、你的编译器(和类型)、你的项目有帮助(shorthand。)

如果需要,可以从源代码编译 SFML。有时,偶然使用不兼容的版本不会在许多基本问题上显示任何问题,直到您 运行 出现奇怪的错误。

有关从源代码编译 SFML 的信息,请参阅此文档: https://www.sfml-dev.org/tutorials/2.5/compile-with-cmake.php

所以,感谢 AlixianaBritmonkey,我解决了这个问题。我只是创建新项目并移动了每个文件。我不知道为什么之前会出现问题,但我的解决方案有所帮助。