【问题标题】:undefined reference to boost::system::generic_category() - Setting up Ogre with Eclipse CDT on Windows未定义对 boost::system::generic_category() 的引用 - 在 Windows 上使用 Eclipse CDT 设置 Ogre
【发布时间】:2013-07-22 20:35:25
【问题描述】:

好的,所以我一直在关注this 教程。

我按照说明设置了所有内容(仔细检查了所有内容),我唯一更改的是(第 10 步),来自

${OGRE_HOME}\boost_1_44

${OGRE_HOME}\boost

因为在我的 Ogre SDK 版本 (1.81) 中,没有 boost_1_44 文件夹,只有 boost 文件夹。

无论如何,正如我所说,当我尝试编译我的程序时,我得到了这三个错误:

undefined reference to boost::system::generic_category() 
undefined reference to boost::system::generic_category() 
undefined reference to boost::system::system_category() 

我尝试将这个:-lboost_system 添加到我的项目中。我去了 Properties > C/C++ Build > Settings > GCC C++ Compiler > Miscellaneous 并将其添加到现有标志中,但没有运气。

我用谷歌搜索,显然这是唯一可能的解决方案。所以,我问你,如果有人可以解释我(请尽可能简单,一步一步)如何修复这个编译器错误。

编辑:我使用 MinGW 作为编译器(我将它与 MSYS 一起使用)。

【问题讨论】:

  • 链接器路径上有libboost_system.a吗?
  • 我在属性 > C/C++ Build > Settings > MinGW C++ Linker > Libraries > Libraries (-l);但我得到一个错误,说:“找不到 -libboost_system.a”。
  • 再次,“链接器路径上是否有 libboost_system.a”?你看到这样的文件吗?名为“libboost_system.a”的文件是否存在于预期的位置?
  • 我没看到,但我还是 Eclipse IDE 的新手,所以我可能找错地方了...
  • 与 Eclipse 无关。如果您还没有构建 Boost,则 Boost.System 静态库不存在。您应该首先构建 boost(请参阅“入门”手册:boost.org/doc/libs/1_54_0/more/getting_started/windows.html)。

标签: boost compiler-errors mingw eclipse-cdt ogre


【解决方案1】:

我在 linux 中使用 CMake 和 clang 编译时遇到过类似的问题。我通过添加标志来修复它

-DBOOST_SYSTEM_NO_DEPRECATED

这会“消除”导致问题的行。我不知道这是否会解决您的错误,但它确实解决了我的错误。

(如果您使用 ./configure 还添加 CPPFLAGS='-DBOOST_SYSTEM_NO_DEPRECATED' 作为参数)。

【讨论】:

  • 感谢您的解决方案。我在编译 POV-Ray 时花了 1 多小时搜索错误原因
猜你喜欢
  • 2021-05-16
  • 2013-08-14
  • 2012-11-08
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
相关资源
最近更新 更多