Ошибка компоновщика журнала ускорения

Я скачал и собрал Boost 1.55 из исходников. Пытаюсь использовать Boost-log. В базовом случае (http://boost-log.sourceforge.net/libs/log/doc/html)/log/tutorial.html#log.tutorial.trivial он работает нормально без каких-либо проблем, но когда я пытаюсь использовать более продвинутый функции (например, http://boost-log.sourceforge.net/libs/log/example/doc/tutorial_fmt_stream.cpp) я получаю эту ошибку:

main.obj: ошибка LNK2019: неразрешенный внешний символ "void __cdecl boost :: filesystem :: path_traits :: convert (char const *, char const *, class std :: basic_string, class std :: allocator> &, class std :: codecvt const &) "(? convert @ path_traits @ filesystem @ boost @@ YAXPBD0AAV? $ basic_string @ GU? $ char_traits @ G @ std @@ V? $ allocator @ G @ 2 @@ std @@ ABV? $ codecvt @ GDH @ 5 @@ Z), на которую ссылается функция "void __cdecl boost :: filesystem :: path_traits :: dispatch, class std :: allocator>> (class std :: basic_string, class std :: allocator> const &, class std :: basic_string, class std :: allocator> &, class std :: codecvt const &) "(?? $ dispatch @ V? $ basic_string @ GU? $ char_traits @ G @ std @@ V? $ allocator @ G @ 2 @@ std @@@ path_traits @ filesystem @ boost @@ YAXABV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ AAV? $ basic_string @ GU? $ char_traits @ G @ std @@ V? $ allocator @ G @ 2 @@ 4 @ ABV? $ codecvt @ GDH @ 4 @@ Z)

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "void __cdecl boost :: log :: v2s_mt_nt5 :: aux :: code_convert (unsigned short const *, unsigned int, class std :: basic_string, class std :: allocator> & , class std :: locale const &) "(? code_convert @ aux @ v2s_mt_nt5 @ log @ boost @@ YAXPBGIAAV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @ @ ABVlocale @ 6 @@ Z), на которую ссылается функция "private: void __thiscall boost :: log :: v2s_mt_nt5 :: basic_formatting_ostream, class std :: allocator> :: align_write (unsigned short const *, __ int64)" (?? $ align_write @G @? $ Basic_formatting_ostream @ DU? $ Char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ v2s_mt_nt5 @ log @ boost @@ AAEXPBG_J @ Z)

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "public: static class std :: codecvt const & __cdecl boost :: filesystem :: path :: codecvt (void)" (? Codecvt @ path @ filesystem @ boost @@ SAABV ? $ codecvt @ GDH @ std @@ XZ) упоминается в функции "public: __thiscall boost :: filesystem :: path :: path (char const (&) [14], void *)" (?? $? 0 $$ BY0O @ $$ CBD @ путь @ файловая система @ boost @@ QAE @ AAY0O @ $$ CBDPAX @ Z)

Таким образом, он не может найти функции convert (...), code_convert (...) и codecvt (...) в файлах .lib.

Я уже пытался добавить все библиотеки релизов (файлы .lib, созданные во время сборки) в «дополнительные библиотеки», и в целом я думаю, что визуальная студия находит все библиотеки, но не может найти эти функции в библиотеках. Есть идеи, как я могу это исправить?

Я создал Boost 1.55 из исходного кода, используя 32-разрядную версию Visual Studio 2010 (msvc10.0), выпуск и отладку. Работаю на windows 7 x64.


person cyriel    schedule 19.12.2013    source источник
comment
Автоматические ссылки MSVC увеличивают библиотеки, поэтому вам не нужно связывать их явно. Однако unsigned short выглядит подозрительно. Убедитесь, что вы скомпилировали все с параметром / Zc: wchar_t, т.е. wchar_t - это собственный тип.   -  person Igor R.    schedule 20.12.2013
comment
Вы используете те же настройки (читай: #defines) для boost.log в своем проекте, которые использовались при компиляции исходников? В нашем случае мы должны были обязательно использовать BOOST_LOG_NO_THREADS в проектах, включая заголовки boost.log, иначе мы получим другие, хотя и одинаково раздражающие ошибки компоновщика.   -  person Jay    schedule 29.01.2014


Ответы (1)


У меня была такая же проблема, и я мог исправить ее, изменив одно из свойств проекта в VisualStudio 2010.

Go to:

Страницы свойств -> Свойства конфигурации -> C / C ++ -> Язык -> Обрабатывать WChar_t как встроенный тип:

И установите для свойства значение:

Да (/ Zc: wchar_t)

Надеюсь, вам это тоже пригодится :)

Заботиться,

person dani89mc    schedule 07.11.2014