2014-10-27 3 views
5

Я пытаюсь связать несколько библиотек повышения (те, которые нужно скомпилировать) в visual studio 2013, и у меня возникают проблемы с этим.ссылка на boost с visual studio 2013

Я установил файлы подталкивание по подножке из командной строки

boostrap.bat 

и

b2 --toolset=msvc-12.0 --build-type=complete architecture=x86 address-model=64 stage 

так, что библиотеки находятся в каталоге C: \ boost_1_56_0/этап/Библиотека

В моем проекте я перехожу к свойствам конфигурации> c/C++> General> Additional include directories и включает C: \ boost_1_56_0 и включает заголовки, используя, например, #include<boost/serialization/vector.hpp> среди других

Я затем перейти к свойствам конфигурации> линкера> дополнительных зависимостей библиотеки и включают в C: \ boost_1_56_0 \ этап \ Lib

Я в настоящее время известно, что повышение использует автоматическое связывание, так что я убедиться, что нет никаких попыток к направляющей ссылке для библиотек импульса в свойствах конфигурации> линкер> вход> дополнительные зависимости

Однако я все еще получаю (много) ошибок компоновщика следующего типа:

error LNK2001: unresolved external symbol "public: void __thiscall boost::archive::detail::basic_oarchive::end_preamble(void)" ([email protected][email protected]@[email protected]@@QAEXXZ) 

всех г вопросы, связанные с лифтом, я нахожу в недоумении о возможности автоматического связывания boost, но теперь я прямо говорю, что я должен делать (насколько мне известно). Он находит файлы заголовков в порядке, а файлы библиотеки - это то место, где я инструктирую компоновщика искать их.

Что я могу делать неправильно?

+0

Пробовал ли вы препроцесс к файлу и изучал файл .i, чтобы узнать, что генерируется? – BlueTrin

ответ

0

Есть тонны статей для связывания boost в визуальной студии в переполнении стека. Один из них, который я считаю минимальным/полным, - How to use Boost in Visual Studio 2010

+0

Я в основном придерживался этого явно и все еще получаю ошибки связывания – user3353819

0

Я просто столкнулся с подобным вопросом и поделился своей идеей с вами. Возможно, вы собираете как 32-битные, так и 64-битные библиотеки для повышения. Таким образом, я думаю, у вас, возможно, есть два каталога, которые содержат библиотеки с одинаковыми именами, но встроенные в разные платформы, такие как $ (BOOST154_NEW_HOME) \ lib_x64 и $ (BOOST154_NEW_HOME) \ lib_x86. Вы должны были включить оба пути в свои свойства конфигурации> компоновщик> дополнительные зависимости библиотек. Хотя boost использует auto_link, чтобы узнать, какую библиотеку вы хотите использовать, но она все еще путается, о том, какой lib под 32 бит или 64 бит нужно импортировать.

Мое предложение состоит в том, что вы должны включить только 64-битный файл boost libs в свои свойства конфигурации> компоновщик> дополнительные зависимости библиотек.

+0

Можем ли мы добавить к нему полный каталог? Я думал, что мы должны просто добавить файлы .lib – Sashank