#включаютвызывает неразрешенный внешний символ, используется bcp - PullRequest
2 голосов
/ 11 марта 2012

Я не опытный программист. Я попытался вырезать часть надстройки и вставить ее непосредственно в мой проект, который представляет собой решение C ++ в Visual Studio 2010. Я сделал это так:

  • несжатая форсированная библиотека
  • bootstrap.bat
  • bjam tools/bcd - этот созданный каталог . \ Bin.v2 \ tools \ bcp \ msvc-10.0 \ release \ link-static \ threading-multi \
  • изменить каталог на вышеупомянутый
  • Я написал скрипт для сканирования всех файлов в решении, результат:
    не копируемый поток статического_сервера поток / блокирует поток хронологический процесс / отображенный_регион поток / recursive_mutex crc межпроцессный процесс cstdint / file_mapping make_shared shared_ptr lexical_cast
  • bcp --boost=C:\Users\xxxxxxxx\boost_1_49_0 noncopyable static_assert ratio thread/locks thread chrono interprocess/mapped_region thread/recursive_mutex crc cstdint interprocess/file_mapping make_shared shared_ptr lexical_cast lexical_cast ./myboost
  • копировать . / Myboost в решение, настроить свойства, все работает нормально, пока я не пытаюсь #include "boost / chrono.hpp" (например, #include "boost / lexical_cast.hpp" все в порядке).
  • boost / chrono.hpp вызывает ошибку компоновщика:

    3> playerMain.obj: ошибка LNK2001: неразрешенный внешний символ "класс boost :: system :: error_category const & __cdecl boost :: system :: system_category (void)" (? System_category @ system @ boost @@ YAABVerror_category @ 12 @XZ)

    3> playerMain.obj: ошибка LNK2001: неразрешенный внешний символ "класс boost :: system :: error_category const & __cdecl boost :: system :: generic_category (void)" (? Generic_category @ system @ boost @@ YAABVerror_category @ 12 @XZ)


Правильно ли я использую bcp?
Что я должен сделать, чтобы это работало?

1 Ответ

3 голосов
/ 11 марта 2012

Процесс установки Boost для использования с Visual Studio описан довольно четко здесь . Вам не нужно писать какие-либо сценарии установки.

Важно знать, что большинство библиотек Boost предназначены только для заголовков (например, Boost.Lexical_Cast), однако для некоторых требуется ссылка на статическую библиотеку (например, Boost.System). В этом разделе документа Начало работы о том, как сообщить Visual Studio, где находятся статические библиотеки Boost.

В этом разделе перечислены библиотеки, которые не только для заголовков. Некоторые библиотеки (такие как Boost.Chrono и Boost.Asio) сами по себе только для заголовков, но они зависят от Boost.System, который необходимо связать с вашей программой.

Надеюсь, это поможет.

...