связь с бустом нерешенная внешняя ошибка связи - PullRequest
0 голосов
/ 10 марта 2010

Visual Studio 2005

Я связываюсь с буст-библиотеками выпуска 1_33_1.

Я получаю эту ссылку ошибки.

libboost_thread-vc80-mt-sgd-1_33_1.lib(once.obj) :error LNK2001: unresolved external symbol "public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ)

У кого-нибудь есть предложения?

Большое спасибо,

Редактировать ======

После перекомпиляции библиотек наддува с использованием этих ключей:

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type-complete --toolset=msvc-8.0 address-model=32 architecture=x86

Я получаю некоторые из следующих ошибок:

1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: __wassert already defined in LIBCMTD.lib(wassert.obj)

У кого-нибудь есть идеи?

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Вероятно, происходит то, что ваш проект связан со статической отладочной версией среды выполнения C ++, что приводит к связыванию библиотеки потоков статической отладки и также к другой статической библиотеке, которая была динамически связана со средой выполнения C ++. .


Тег sgd в libboost_thread-vc80-mt-sgd-1_33_1.lib означает, что библиотека потоков поддержки, с которой вы связываетесь, была создана на основе статической отладочной версии среды выполнения C ++.

1 голос
/ 10 марта 2010

Прежде всего, вам не нужно задавать адресную модель и архитектуру явно при сборке 32 бит. Также ваш звонок имеет ошибку: --build-type-complete должно быть --build-type=complete. Если я не ошибаюсь, ваш вызов создает абсолютно все библиотеки, включая файловую систему, регулярные выражения и т. Д.
Очевидно, вам нужен только boost :: thread, поэтому я бы порекомендовал попробовать этот вызов:

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type=complete --toolset=msvc-8.0 --with-thread

Но я не думаю, что это решит вашу проблему, но вы могли бы попробовать.

Я предполагаю, что вы как-то смешали / MD и / MT в настройках проекта.
Смотрите эти ссылки: Первый , Второй

...