Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: blood_shadow от Октябрь 06, 2011, 18:42



Название: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 18:42
Короче захотел я заюзать сигналы и слоты буста, скачал собрал как тут пишут - http://ascend4.org/Binary_installer_for_Boost_on_MinGW

далее в про-файле добавил такое:
Код:
INCLUDEPATH += C:\Program_Files\Libs\boost_1_47_0\
LIBS += -LD:C:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -libboost_signals-mgw45-1_47


это сама либа libboost_signals-mgw45-1_47.а

правильно ли я подключил?

но в итоге выбывают такие ошибки:
Код:
debug/main.o: In function `main': 
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../Boost_STL_examples/main.cpp:72: undefined reference to `boost::signals::connection::~connection()'
debug/main.o: In function `~signal0':
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:142: undefined reference to `boost::signals::trackable::~trackable()'
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:142: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:142: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
debug/main.o: In function `slot<HelloWorld>':
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/slot.hpp:124: undefined reference to `boost::signals::detail::slot_base::create_connection()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:286: undefined reference to `boost::signals::detail::signal_base_impl::connect_slot(boost::any const&, boost::signals::detail::stored_group const&, boost::shared_ptr<boost::signals::detail::slot_base::data_t>, boost::signals::connect_position)'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:337: undefined reference to `boost::signals::detail::call_notification::call_notification(boost::shared_ptr<boost::signals::detail::signal_base_impl> const&)'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:354: undefined reference to `boost::signals::detail::named_slot_map::end()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:354: undefined reference to `boost::signals::detail::named_slot_map::end()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:354: undefined reference to `boost::signals::detail::named_slot_map::end()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:354: undefined reference to `boost::signals::detail::named_slot_map::begin()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:337: undefined reference to `boost::signals::detail::call_notification::~call_notification()'
debug/main.o:C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:337: undefined reference to `boost::signals::detail::call_notification::~call_notification()'
debug/main.o: In function `signal0':
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::signal_base(boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group> const&, boost::any const&)'
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
debug/main.o: In function `~data_t':
C:\Program_Files\Qt_dynamic\files_dynamic\Boost_STL_examples-build-desktop/../../../Libs/boost_1_47_0/boost/signals/slot.hpp:32: undefined reference to `boost::signals::connection::~connection()'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\Boost_STL_examples.exe] Error 1
mingw32-make: *** [debug] Error 2
Процесс "C:/MinGW/bin/mingw32-make.exe" завершился с кодом %2.
Ошибка сборки проекта Boost_STL_examples (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"

Народ кто использовал сигналы буста, как исправить ситуацию?


Название: Re: boost::signal
Отправлено: BRE от Октябрь 06, 2011, 18:49
Внимательно смотрим на
LIBS += -LD:C:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -libboost_signals-mgw45-1_47

1. Где лежит буст?
2. Подключение библиотеки выполняется с помощью -l <имя библиотеки без впереди стоящего префикса lib и расширения>


Название: Re: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 18:55
Внимательно смотрим на
LIBS += -LD:C:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -libboost_signals-mgw45-1_47

1. Где лежит буст?
2. Подключение библиотеки выполняется с помощью -l <имя библиотеки без впереди стоящего префикса lib и расширения>


исправил, недоглядел...

так всеравно не пашет:
Код:
LIBS += -LC:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -libboost_signals-mgw45-1_47.a
и так тоже:
Код:
LIBS += -LC:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -libboost_signals-mgw45-1_47

Буст лежит в C:\Program_Files\Libs\boost_1_47_0\

собралось сюда - C:\Program_Files\Libs\boost_1_47_0\boost-build, а тут я так понимаю для сигналов папка:
C:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals


Название: Re: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 19:02
и так тоже ничего (((
LIBS += -LC:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -boost_signals-mgw45-1_47


Название: Re: boost::signal
Отправлено: BRE от Октябрь 06, 2011, 19:07
и так тоже ничего (((
LIBS += -LC:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -boost_signals-mgw45-1_47
Замени на -lboost_signals-mgw45-1_47
Внимательно. :)


Название: Re: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 19:21
неужели все так печально...

вот заменил, получилось:
Код:
LIBS += -LC:\Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\signals\build\gcc-mingw-4.5.0\release\link-static -lboost_signals-mgw45-1_47

тоже самое...


Название: Re: boost::signal
Отправлено: Пантер от Октябрь 06, 2011, 21:02
Use CMake, Luke!


Название: Re: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 21:14
Use CMake, Luke!
все наконец совершилось... проблема была в глюканутом Boost.Build + bjam
короче пересобрал все вроде все пашет
я вот одного не пойму зачем делать отпут в C:\Boost\lib - тут лежат правильные либы
и раскидынные либы по Program_Files\Libs\boost_1_47_0\boost-build\boost\bin.v2\libs\ которые нихрена не работают...

странно как-то...


Название: Re: boost::signal
Отправлено: blood_shadow от Октябрь 06, 2011, 21:28
Кстати, а можно ли как-то забить дерикторию с бустом C:\Program_Files\Libs\Boost\include\boost-1_47\
в настройки креатора, чтобы не писать в каждом проекте LIBS += -LC:\Program_Files\Libs\Boost\lib\ -lboost_signals-mgw45-mt-1_47 ?