【问题标题】:BOOST & GCC, undefined reference to boostBOOST & GCC,对 boost 的未定义引用
【发布时间】:2015-08-23 04:57:59
【问题描述】:

我必须说,我是使用 Boost 库的新手,但我已经在一些项目中使用过它们,并且对它们非常满意。 现在,我想在我的一个文件夹中获取具有特定扩展名的所有文件,所以,在网上查找,我发现了这个>How to get list of files with a specific extension in a given folder 我在 Windows 7 上使用代码块。

我已经完成了所有看起来需要的事情,当我尝试编译它时,我得到了三个错误>

C:\boost_1_58_0\boost\system\error_code.hpp|221|未定义引用 boost::system::generic_category()'| C:\boost_1_58_0\boost\system\error_code.hpp|222|undefined reference to boost::system::generic_category()'| C:\boost_1_58_0\boost\system\error_code.hpp|223|未定义引用 `boost::system::system_category()'|

我在网上查了一下,发现除了指向我的“搜索目录(编译器和链接器)来加速安装外,我还需要直接指向它以某种方式提升系统库。

我在我的链接器设置中尝试了 -lboost_system,但这并没有解决问题。

我在这里几乎不是专家,所以我问你们是否可以帮助我。

有人有什么想法吗?

【问题讨论】:

  • 确保使用 Boost 库 (-L path/to/boost/libs) 的路径调用链接步骤。我不熟悉 CodeBlocks,所以你必须弄清楚如何让它显示链接器调用命令。当然,还要确保您尝试链接到的库 (boost_system) 确实存在于指定位置。
  • 您好,我目前有> -LC:\boost_1_58_0\libs\system 但这没有帮助。那个文件夹确实存在。
  • 好的,但是库libboost_system 本身呢?我愿意打赌上面的路径是错误的。该库很可能位于C:\boost_1_58_0\stage\lib。在 Boost 树中搜索库文件,如果不存在,则需要构建 Boost。
  • s29.postimg.org/mk9g08o47/Capture.png 这是搜索给我的。你能告诉我链接器设置中包含什么吗?我猜一个用于调试,一个用于发布构建?
  • 这些是这些库的 Visual Studio 版本,注意到名称中的 vc110 了吗?您需要使用 gcc 构建 Boost。

标签: c++ gcc boost codeblocks


【解决方案1】:

您需要使用 GCC 的 -L 选项提供您的库所在的路径。

查看 Boost 文档的 this section

【讨论】:

  • 我的 boost 目录直接在 C:C:\boost_1_58_0\ 所以,我做到了> C:\boost_1_58_0\libs\system\test\system(在那个文件夹中有一个 system.sln)但是,这给了我权限被拒绝。
  • 那么你有没有在你的 gcc 链接命令中检查你有 -LC:\ ?你能提供完整的 gcc 链接命令吗?
  • -LC:\boost_1_58_0\libs\system 我在链接器设置/链接库窗口中有它。
  • 你是如何安装 boost 的?它的一部分是仅头文件,这意味着您只需在项目中包含头文件而无需任何设置,但 boost 系统有一些二进制文件。这意味着你必须先编译它。如果在安装过程中一切顺利,你应该有一个名为 libboost_system.dll 的文件
  • @user3735245 你确定你安装了 boost?