Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проблема с boost::this_thread::interruption_point


Автор: DTF 26.3.2011, 13:07
Здрасьте все!
Столкнудся я со странной, на мой взгляд, проблемой, про которую ничего не нашел в рунете,
а буржнет не особо копал, т.к. не силен в английском.

Суть такова:
Есть MSVS 2003, есть установленный Boost, и есть моя программа, которая 
пытается использовать бустовскую многопоточность.

В опциях компилятора прописан путь к директории с бустовскими хедерами - $(BOOST)
В опциях линкера есть путь к каталогу с либами - $(BOOST)/stage/lib

Примитивная программа, которая просто создает поток, компилируется и работает.

Однако, проблемы начинаются, когда я вызываю функцию boost::this_thread::interruption_enabled().

На неё ругается линкер:
Цитата

boostthread2 error LNK2019: unresolved external symbol "bool __cdecl boost::this_thread::interruption_enabled(void)" (?interruption_enabled@this_thread@boost@@YA_NXZ) referenced in function _main


Я посмотрел в либе boost_thread-vc71-mt-gd-1_44.lib и нашел там функцию
?interruption_enabled@this_thread@boost@@YI_NXZ

Как видите, разница с той, которую ждет линкер, в одну букву.

На эти имена я натравил майкросовтовский undecorator имен, и получил следующее:
Линкер ожидает bool __cdecl boost::this_thread::interruption_enabled(void),
а в либе лежит bool __fastcall boost::this_thread::interruption_enabled(void).


А теперь вопрос: подскажите плс, что мне сделать, чтобы чертова функция вызывалась?


UPD:
Проблему решил путем установки флага в опциях компиляции проекта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)