【问题标题】:Yet Another Linker Error又一个链接器错误
【发布时间】:2016-01-06 05:50:39
【问题描述】:

在重新安装了不同版本的 CodeBlocks、MinGW 和 SFML 之后,我终于找到了一个很好的匹配项。我使用 SFML 网站上的教程 main.cpp 进行测试。不幸的是,当我尝试使用 Texture::loadFromFile() 时,我得到了这个错误。

||=== Build: Debug in SFML TEST (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
C:\C++\SFML TEST\main.cpp|9|undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

这是编译器使用的命令:

i686-w64-mingw32-g++.exe -LC:\SFML-2.3.2\lib -o "bin\Debug\SFML TEST.exe" obj\Debug\main.o  -static-libgcc -static-libstdc++ -std=c++11  -lsfml-graphics -lsfml-window -lsfml-system -lsfml-graphics-d -lsfml-window-d -lsfml-system-d -mwindows obj\Debug\main.o

我一直在广泛地搜索互联网,似乎有一百万不同的人有一百万个不同的问题。谁真的在工作? 无论如何,无论我选择做静态/动态,错误都是一样的。我重新检查了 4 次是否我在构建选项中链接错误,但一切都在那里。

我有 SFML 2.3.2、CodeBlocks 13.12 和 MingW 4.2.0 gcc 5.3.0 感谢您的宝贵时间。

【问题讨论】:

  • 如果您发布产生此错误的命令可能会有所帮助。

标签: c++ linker-errors sfml


【解决方案1】:

SFML 的可下载库仅提供与 MinGW gcc 4.9.2 的兼容性,而不是您正在使用的 5.3.0。考虑通过使用 cmake 生成工作区或 makefile 来自己构建 SFML,或者考虑使用兼容的编译器版本。 您还同时链接了发布库和调试库。一种就够了。

【讨论】:

  • 从 MinGW gcc 4.9.2 更改为 5.3.0 是 SFML 工作的原因,但我会尝试恢复。该命令是由编译器组合在一起的,所以我不知道为什么它会默认这样做。关于:“使用兼容的编译器版本”,最新版本的CodeBlocks(13.12)不应该兼容吗?
  • CodeBlocks 本身与 SFML 的兼容性无关。只有提供的编译器可以。而且由于 SFML 提供 4.9.2 和 5.3.0 是一个主要版本的增加,我对此表示怀疑。我仍然认为您最好的解决方案是简单地使用 cmake(还有一个不错的 gui 版本)来生成工作区或 makefile,自己构建 sfml 并解决任何类型的配置错误。从那以后我就是这样做的,并且无论您使用什么编译器、ide 或版本,它总是可以流畅地工作。
  • 感谢您的帮助。我希望完全避免深入研究cmake,但我想我必须硬着头皮。非常感谢,干杯。
  • 这真的没什么大不了的。甚至还有教程:​​sfml-dev.org/tutorials/2.0/compile-with-cmake.php
  • 你有 MinGW 4.9.2 的链接吗,我似乎在任何地方都找不到。 sourceforge 上的安装程序没有高于 4.8.1-4 的任何内容。我在该安装程序的文件树中找到了 4.9.2 的构建,但没有单独的下载按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多