【问题标题】:Can't build application with boost.log无法使用 boost.log 构建应用程序
【发布时间】:2014-03-04 16:24:23
【问题描述】:

当我将 boost/log 标头包含到源文件中时出现链接错误。

错误 5 错误 LNK2019:无法解析的外部符号“类 boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ) 引用 在函数“void __cdecl boost::system::`动态初始化器中 'native_ecat''(无效)“ (??__Enative_ecat@system@boost@@YAXXZ) C:\Users\lukas\Documents\Visual Studio 2013\Projects\MyFilter\MyFilter\MyFilter.obj MyFilter

所以似乎是我没有链接系统库的问题。但是,我将链接库包含路径设置为包含 boost 库。 该文件是

libboost_system-vc120-mt-1_55.lib

并且位于 D:\Program Files (x86)\boost_1_55_0\stage\lib - 所以应该可以工作。

那么为什么 Visual Studio 不将其链接到应用程序?或者实际上有几个应该编译的boost系统lib文件?

【问题讨论】:

  • 您是否添加了附加库目录的路径?库的版本是否正确? x86 到 x86 项目?
  • 是的,我做到了。当我只使用日志库的 trivial.hpp 文件时,我实际上可以构建应用程序。但是其他的不起作用,因为它们依赖于系统库
  • 版本也正确吗?你用的是什么目标?有 CPU 吗?
  • 我运行的是 64 位机器,但我不确定 boost 是否编译为 x64
  • 如果路径正确,我真的相信这是版本问题。要编译不同的库,请使用 (x86) b2 --toolset=msvc-10.0 --build-type=complete stage(x64) b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage。我希望你能取得成功。

标签: c++ boost


【解决方案1】:

就像我们在 cmets 中讨论的那样。验证 boost 库的版本(x86 和 x64)并且您是 Visual Studio 项目,这些版本应该相同。

下面是编译 boost 的命令:

x86:

b2 --toolset=msvc-10.0 --build-type=complete stage

x64:

b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2018-10-24
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多