【问题标题】:Mingw32 Boost Log Link Errors: InterlockedCompareExchangeMingw32 Boost 日志链接错误:InterlockedCompareExchange
【发布时间】:2014-10-05 17:37:29
【问题描述】:

您好,我正在尝试在 Windows 8 上将 Boost Log 简单示例与 mingw32 链接,但出现链接错误:

日志.cpp

#include <boost/log/trivial.hpp>

int main()
{

    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
    BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
    BOOST_LOG_TRIVIAL(info) << "An informational severity message";
    BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
    BOOST_LOG_TRIVIAL(error) << "An error severity message";
    BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}

我正在运行以下编译和链接命令

gcc -Wall -g -static -I./../../boost_1_56_0/ Log.cpp -o Log.exe -L./../../boost_1_56_0/stage/lib/ -lboost_log-mgw48-mt-1_56 -lboost_thread-mgw48-mt-1_56 -lboost_system-mgw48-mt-1_56 -lstdc++

我收到以下错误:

C:\SpellSpindle\GelatinousEngine\BoostHelloWorld\Log>mingw32-make
g++ -Wall -g -static -I./../../boost_1_56_0/ Log.cpp -o Log.exe -L./../../boost_
1_56_0/stage/lib/ -lboost_log-mgw48-mt-1_56 -lboost_thread-mgw48-mt-1_56 -lboost
_system-mgw48-mt-1_56 -lstdc++
./../../boost_1_56_0/stage/lib/\libboost_thread-mgw48-mt-1_56.a(thread.o):thread
.cpp:(.text$_ZN5boost6detail5win3223GetTickCount64emulationEv+0x1e): undefined r
eference to `_InterlockedCompareExchange'
./../../boost_1_56_0/stage/lib/\libboost_thread-mgw48-mt-1_56.a(thread.o):thread
.cpp:(.text$_ZN5boost6detail5win3223GetTickCount64emulationEv+0x77): undefined r
eference to `_InterlockedCompareExchange'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: ./../../bo
ost_1_56_0/stage/lib/\libboost_thread-mgw48-mt-1_56.a(thread.o): bad reloc addre
ss 0x77 in section `.text$_ZN5boost6detail5win3223GetTickCount64emulationEv'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link
 failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
Makefile:15: recipe for target 'all' failed
mingw32-make: *** [all] Error 1

我几天来一直在尝试链接此链接,但在互联网上没有发现任何修复链接错误的内容。

谁能帮忙?

【问题讨论】:

    标签: c++ boost mingw


    【解决方案1】:

    将来自不同网站的信息拼接在一起:

    【讨论】:

    • 我有 mingw 4.8.1。我已经为 mingw 4.8 构建了 boost 库,但我为 4.8.1 重新构建了它们,它们仍然无法编译,给出相同的错误。
    • 我正在使用“boostrap mingw”、“bjam --toolset=gcc-4.8.1 --build-type=complete”构建它们。是否有其他构建它们的方法适用于 mingw 4.8.1?我尝试安装 Mingw-W64,但在安装时我收到“错误解决”消息。它没有安装任何我可以编译的东西。我看到存在向后兼容性错误,但我第一次尝试构建和使用 boost 是使用 mingw 4.8.1。问题仍然是向后兼容性还是其他问题?
    • 您是说 mingw 4.8 破坏了 boost 构建,但现在有什么办法可以工作吗?还是坏了吗?
    【解决方案2】:

    Mingw-W64 的安装程序无法正常工作,但在我手动从存储库中下载它后,我能够让它工作。我为 mingw 版本 4.9.1 重建了 boost 库,然后它确实链接到了新库。非常感谢!哇哦!

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 2018-03-05
      • 2012-04-11
      • 1970-01-01
      • 2014-09-14
      • 2014-05-18
      相关资源
      最近更新 更多