Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > linkining error boost::locale


Автор: Guinness 19.9.2013, 15:22
Суть проблемы. При компиляции нижеследующего кода происходят ошибки:
Код

#include <boost/locale.hpp>

using namespace boost::locale;
int main()
{
    generator gen;
    gen.characters(wchar_t_facet);
    gen.categories(collation_facet | formatting_facet);
    std::locale::global(gen("de_DE.UTF-8"));
}

Код

1>Linking...
1>libboost_locale-vc90-mt-gd-1_54.lib(generator.obj) : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "public: __thiscall boost::thread_exception::thread_exception(int,char const *)" (??0thread_exception@boost@@QAE@HPBD@Z)
1>libboost_locale-vc90-mt-gd-1_54.lib(localization_backend.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(lcid.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(date_time.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(generator.obj) : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'posix_category''(void)" (??__Eposix_category@system@boost@@YAXXZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(localization_backend.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(lcid.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>libboost_locale-vc90-mt-gd-1_54.lib(date_time.obj) : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>Q:\tests\boost\locale\Debug\locale.exe : fatal error LNK1120: 2 unresolved externals


Что было сделано.
1). Скачан официальный дистрибутив 1_54_0
2). Пройден следующий путь:
Код

Go to the directory tools\build\v2\.
Run bootstrap.bat
Run b2 install --prefix=PREFIX where PREFIX is the directory where you want Boost.Build to be installed 
(b2 запущен с параметрами, как я теперь понимаю не обязательными: 
b2 install --prefix=C:\boost_build toolset=msvc-9.0 --build-type=complete stage)
Add PREFIX\bin to your PATH environment variable.

3). Далее из папки C:\boost\boost_1_54_0 я запускаю bjam:
bjam install toolset=msvc-9.0 --build-type=complete stage
4). Далее начинаю тестировать работу библиотеки в Microsoft Visual Studio 2008. Последовательно собираю два примера http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#build-a-simple-program-using-boost,http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#link-your-program-to-a-boost-library. Всё собирается без ошибок и работает.
5). Т.к. до этого активно использовал Qt, решил познакомится с альтернативой tr и trUtf8. Наткнулся на boost::locale. Начал читать - понравилось. Но примеры не компилируются.
6). Всё что нашёл в инете, обычно, связано с тем, что люди собирали какие-то отдельные сборки (у меня полная) или забывали добавить пути в Additional Library Directories ( тут вроде как нормально, т.к. в этом же проекте были собраны http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp03/allocation/server.cpp и http://www.boost.org/doc/libs/1_54_0/doc/html/signals2/tutorial.html#idp164794688).

В общем, я уже запутался, буду рад любой помощи.

ЗЫ ещё в C:\boost\boost_1_54_0\libs\coroutine\build\JamFile.v2 была замена на explicit allocator_sources ;

Автор: bsa 19.9.2013, 16:29
добавь линковку с библиотекой system.

Автор: Guinness 20.9.2013, 07:20
Цитата(bsa @  19.9.2013,  17:29 Найти цитируемый пост)
добавь линковку с библиотекой system.

Угу, в Configuration Properties->Linker->Input->Addition Dependencies добавил boost_system-vc90-mt-gd-1_54.lib. Программа начала собираться, однако, при запуске выдало сообщение, что приложение не может быть запущено, т.к. на копмпьютере не обнаруженеа boost_system-vc90-mt-gd-1_54.dll.
Добавил её в папку с исполняемым файлом, все заработало(Debug Win32).
Это так и должно быть, или я косячу с настройками сборки? И есть ли предположения почему у меня не работает автоматическая линковка?

Добавлено через 52 секунды
Причем автоматическая линковка boost_system?

Автор: bsa 20.9.2013, 13:00
Цитата(Guinness @  20.9.2013,  08:20 Найти цитируемый пост)
Это так и должно быть, или я косячу с настройками сборки? И есть ли предположения почему у меня не работает автоматическая линковка?
Возможно, про автоматическую линковку забыли разработчики буста.

Я, например, ей никогда не пользуюсь. Поэтому у меня проблем нет.  smile 

Автор: Guinness 20.9.2013, 13:10
Ясно. Спасибо, за помощь. Буду дальше locale ковырять. =)

Автор: SenkraD 20.9.2013, 14:23
Цитата(bsa @  20.9.2013,  13:00 Найти цитируемый пост)
Возможно, про автоматическую линковку забыли разработчики буста.
точно нет, так автолинковка для MS VC  официально сапортится boost'ом.

Пути к либам для проекта или студии указаны верно?

Автор: Guinness 20.9.2013, 15:08
Цитата(SenkraD @  20.9.2013,  15:23 Найти цитируемый пост)
Пути к либам для проекта или студии указаны верно?

Да, тогда бы эти пункты не выполнились =):
Цитата(Guinness @  19.9.2013,  16:22 Найти цитируемый пост)
4). Далее начинаю тестировать работу библиотеки в Microsoft Visual Studio 2008. Последовательно собираю два примера 1,2. Всё собирается без ошибок и работает.

Цитата(Guinness @  19.9.2013,  16:22 Найти цитируемый пост)
6). Всё что нашёл в инете, обычно, связано с тем, что люди собирали какие-то отдельные сборки (у меня полная) или забывали добавить пути в Additional Library Directories ( тут вроде как нормально, т.к. в этом же проекте были собраны asio и signals2).


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