【问题标题】:Problem linking c++ code using boost with mingw使用boost与mingw链接c ++代码时出现问题
【发布时间】:2010-11-10 12:30:51
【问题描述】:

我正在尝试将我为 gcc(在 linux 上)编写的一些代码移植/构建为 windows 上的 dll。首先,我尝试在 VC++ 下构建,但是有很多错误/警告(主要是在 VC 自己的包含文件中,这对我来说并没有多大意义:))所以我安装了 MinGW 发行版(其中包括 Boost 库)。编译进行得相当顺利,但是链接失败,未定义对来自 boost 库的函数的引用。 “-t”参数表明链接器出于某种原因实际上并未使用 boost 库(是的,-L 路径是正确的,库在那里,当我使用 -l 时链接器不会抱怨)。

经过大量谷歌搜索后,我发现顺序是问题所在,我必须将我的 -l 参数放在所有 .o 文件之后(因为依赖关系)。除了对线程库的未定义引用之外,这似乎解决了所有问题。再次 -t 表明链接器实际上没有使用这个库(不在列表中),其他库(我也使用 boost_system 和 boost_date_time)。我再次使用参数的顺序,但结果是一样的。知道我错过了什么吗?

错误是:

c:/x5/cpp/build//timed_cond.o:timed_cond.cpp:(.text$_ZN5boost6detail24basic_condition_variable7do_waitINS_11unique_lockINS_5mutexEEEEEbRT_NS0_7timeoutE[bool boost::detail::basic_condition_variable::do_wait<boost::unique_lock<boost::mutex> > (boost::unique_lock<boost::mutex>&, boost::detail::timeout)]+0x246): undefined reference to `_imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'

我在两个平台上使用相同版本的 Boost 库 (1.44.0)

【问题讨论】:

    标签: c++ boost mingw


    【解决方案1】:

    好的,我找到了答案。看起来问题出在 MinGW 发行版中的 boost 库是静态的。通常它们被配置为动态链接并导致上述问题。 This答案解释它...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 2011-05-27
      • 1970-01-01
      • 2020-06-19
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多