увеличить ошибку LNK2019

Я прочитал документацию по усилению, используя '5.3 .4 Вызов b2 ', а затем обсуждения на форуме, в которых объясняются детали привязки библиотеки ускорения к заголовок и каталоги компоновщика в справке по boost '4.1 Build From the Visual Studio IDE' и нашел эту интересную вики, посвященную ускорению, в которой объясняется элементы управления bjam.exe.

поместил #include <boost/thread/thread.hpp> в main.cpp

И я получаю эту ошибку компоновщика, и существующие потоки справки определили, что проблема связана с x64:

Ошибка:

error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAAEBVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'posix_category''(void)" (??__Eposix_category@system@boost@@YAXXZ)  main.obj

error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'native_ecat''(void)" (??__Enative_ecat@system@boost@@YAXXZ)  main.obj

они похожи, что-то о 'posix_category' и что-то о 'native_ecat'

Итак, я попытался создать библиотеку ускорения x64 и нашел противоречивые инструкции о том, где их разместить:

Кроме того, я попытался изменить конфигурацию vs2008 обратно на x32 -> solutionExplorer / solution_properties / configuration_manager / active_solution_platform - Win32, закрыть и снова открыть визуальную студию - повторно связать дополнительные каталоги C / C ++ / general и Linker / general с Boost / root и Boost / stage / lib - и он скомпилировался без ошибок.

Мое лучшее предположение о командах b2 - --toolset=msvc-9.0 address-model=64 --build-type=complete --stagedir=lib\x64 stage

Пожалуйста, дайте краткие инструкции по сборке и установке x64 версии boost на VS2008. Кроме того, вики говорилось о выпуске и отладке - их нет в Ускорить вызов?


person forest.peterson    schedule 06.03.2013    source источник
comment
По какой причине вы используете версию 5.3 из инструкций по установке вместо упрощенной сборки из исходного кода 5.2?   -  person us2012    schedule 07.03.2013
comment
@ us2012 ничего конкретного - я видел это, но не был уверен, что это такое, ему предшествует 5.1 Install Visual Studio Binaries и рассказывается о BoostPro Computing, которые больше не производят установки, поэтому я, вероятно, пропустил это и выбрал то, что выглядело больше всего справочные темы Я читал о bjam.exe - достаточно честно ...   -  person forest.peterson    schedule 07.03.2013
comment
Я не говорю, что это решит вашу проблему, но, поскольку он полностью автоматизирован и очень прост в использовании, я предлагаю вам хотя бы попробовать его.   -  person us2012    schedule 07.03.2013
comment
да, но меня беспокоит супер-автоматизированная и сверхлегкая часть. У меня установлены VS 2005, 2010 и бета-версия 2011, которые в более ранних установках привели к тому, что автоматизированный и простой подход стал сложным и запутанным :)   -  person forest.peterson    schedule 07.03.2013
comment
Я столкнулся с этой проблемой при использовании автоматического связывания Boost и исправил ее, добавив #include ‹../ boost_libs.h›   -  person Pieter    schedule 16.03.2017


Ответы (1)


использовать c ++ 11

Он более или менее включает в себя все функции boost, которые я хотел использовать, а также компилируется в g ++, не выясняя, как создать библиотеку boost на моем университетском сервере, а затем ссылаться на удаленную сборку g ++ - в значительной степени решило все с этим

person forest.peterson    schedule 22.03.2013
comment
Стандартная библиотека C ++ 11 не является полной заменой Boost. Кроме того, большинство библиотек Boost предназначены только для заголовков, и вам вообще не нужно компилировать что-либо заранее, те, кто не редко зависят от других библиотек, поэтому вы можете просто скопировать их исходники и скомпилировать их с правильной сборкой. инструмент, см., например, github.com/filmor/webos-pdf. - person filmor; 22.03.2013
comment
Я использовал boost :: thread и через два дня не мог понять, как получить библиотеку в сборке g ++ - и даже если я это сделал, в версии RedHat 6.4 есть ошибка - c ++ 11 работал. Мой совет всем, кто находится в такой же ситуации, - использовать c ++ 11. Кроме того, ваша ссылка ни к чему не ведет. - person forest.peterson; 22.03.2013
comment
Не могли бы вы подробнее рассказать об ошибке в Red Hat? Кроме того, этот вопрос, очевидно, касается Windows, так что это совершенно другая ситуация. Ссылка, которую я дал, ведет на мой проект, в котором я интегрировал библиотеку Boost.Thread, где достаточно добавить 4 исходных файла (см. github.com/filmor/webos-pdf/tree/master/boost_thread). - person filmor; 02.04.2013
comment
вы правы - я задал этот вопрос о выигрыше, но это было частью более масштабных усилий по выпуску версии для Linux, которая, очевидно, потерпела бы неудачу, даже если бы я решил вопрос с библиотекой x64. Я не должен был упоминать об этом в этой ветке - я также разместил вопрос в нашем электронном обсуждении в университете и был предупрежден, что в случае, если это в Red Hat Enterprise Linux 6.4, в 6.4 появилась новая ошибка с библиотеками потоков boost и gcc. Версия / g ++ в наличии 6.4: Ошибка Red Hat Bugzilla 908774 Я доволен решением потока С ++ 11, но теперь понимаю, как ваше решение будет работать - person forest.peterson; 02.04.2013