2014-10-05 1 views
0

Привет Я пытаюсь связать подталкивания Log простой пример с mingw32 на Windows 8, и я получаю ошибки ссылку:Mingw32 Повысьте журнала ошибок Ссылка: InterlockedCompareExchange

Log.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 

Я пытался связаться с вами, чтобы связаться с вами в течение нескольких дней и не нашел ничего в Интернете, которые исправляют ошибки ссылок.

Может ли кто-нибудь помочь?

ответ

0

сшивая информацию из различных веб-сайтах:

  • вы не можете смешивать библиотеки, созданные с помощью MinGW 4.7 и MinGW 4.8 (ОП просто заменить несовместимые 4,7-.dlls с 4,8 партнерами, а именно libgomp- 1.dll и libstdC++ 6.dll, что заставило все работать);

  • Это просто означает, что строить импульс с той же версией MingW (смотрите также http://sourceforge.net/apps/trac/mingw-w64/wiki/Building%20Boost для идей о создании подталкивания на MingW)

  • Вот фон нить об этом обратной совместимости непосильного изменения: http://lists.qt-project.org/pipermail/releasing/2013-September/001442.html

+0

У меня есть mingw 4.8.1. Я построил библиотеки boost для mingw 4.8, но я перестроил их для 4.8.1, и они до сих пор не компилируются, что дает те же ошибки. – Anytime0

+0

Я строил их с помощью «boostrap mingw», «bjam --toolset = gcc-4.8.1 --build-type = complete». Есть ли другой способ их создания, который будет работать для воспроизведения 4.8.1? Я попытался установить Mingw-W64, но при его установке я получаю сообщение об ошибке «Ошибка». И он не устанавливает ничего, с чем я могу скомпилировать. Я вижу, что есть обратная ошибка совместимости, но в первый раз, когда я попытался построить и использовать boost, был с mingw 4.8.1. Является ли проблема все еще обратной совместимостью или это что-то еще? – Anytime0

+0

Вы говорите, что mingw 4.8 сломал сборку boost, но есть ли способ, которым он может работать сейчас? Он все еще сломан? – Anytime0

0

Установщик для Mingw-W64 не работал, но после того, как я загрузил его из репозитория вручную, я смог заставить эту работу работать. Я перестроил библиотеки boost для версии 4.9.1, а затем связался с новыми библиотеками. Большое спасибо! Woohoo!

Смежные вопросы