Помогите слинковать бустовую либу

Jun 24, 2012 23:14

Пытаюсь собрать потокобезопасный json_spirit под виндой (mingw).

Компилю boost thread:
b2 toolset=gcc threading=multi link=shared

Либе json_spirit, если она собирается потокобезопасно, нужен boost_thread. Я добавил его в линковку, но на этапе линковки вываливается такая ошибка:
<много символов>: undefined reference to `_imp___ZN5boost6detail12set_tss_dataEPKvNS_10shared_ptrINS0_20tss_cleanup_functionEEEPvb'

Причем, если открыть бустовую .dll в текстовом редакторе, то можно найти, что строка _imp___ZN5boost6detail12set_tss_dataEPKvNS_10shared_ptrINS0_20tss_cleanup_functionEEEPvb там есть (правда, начинается с двух подчеркиваний). dependency walker показывает эту функцию в либе без префикса _imp___

линкую так:
g++ -shared -Wl,--out-implib,libjjson_spirit.a -o json_spirit.dll -L "D:\qtcreatorApps\boost\boost_1_48_0\stage\lib" -lboost_thread-mgw44-mt-1_48.dll json_spirit_reader.o json_spirit_writer.o json_spirit_value.o

полный вывод ошибки занимает >100кб, суть ошибок сводится к тому, что не получается найти функции, которые в dll явно есть. Что я делаю не так? Второй день бьюсь без результата. Перепробовал методом тыка кучу вариантов. Статически собрать получается, но статическая либа не хочет линковаться с проектом по аналогичной причине - не находит функции с именем _imp___многабукв
Previous post Next post
Up