Почему я должен скомпилировать DateTime в повышении, если я не использую to_string или from_string?

При компиляции проекта Visual Studio 2005 года, который ссылается на соединение C++ управляемый/неуправляемый код, я получаю следующую ошибку:

1> ССЫЛКА: фатальная ошибка LNK1104: не может открыть файл 'libboost_date_time-vc80-mt-1_42.lib'

Я следовал Руководству по началу работы. Из уместности этот отрывок:

"Повышение. DateTime имеет двоичный компонент, который только необходим, если Вы используете его to_string/from_string или функции сериализации, или если Вы нацелены на Visual C++ 6.x или Borland".

Я сделал глобальный поиск "to_string" и "from_string". Нет никаких случаев в коде этих методов DateTime.

В документации для самой библиотеки DateTime существует этот отрывок:

"Библиотека имеет несколько функций, которые требуют создания файла библиотеки (главным образом to_string, from_string функции). Пользователи библиотеки Most могут сделать эффективное использование библиотеки, не создавая библиотеку, но просто включая необходимые заголовки. Если библиотека будет необходима, то Jamfile в каталоге сборки произведет "статическую" библиотеку (libboost_date_time) и "динамическую/общую" библиотеку (boost_date_time), который содержит эти функции".

Как был бы, я добрался о решении этого вопроса? Легкое решение состоит в том, чтобы создать библиотеку или использовать двоичный установщик Windows от BoostPro, однако это беспокоит меня, что скомпилированная библиотека требуется, когда согласно документации я не нахожусь в ситуации, которая требует его.

Другим вопросом является DateTime documenation, кажется indiciate, что его "главным образом to_string, from_string)", мой код мог, возможно, ссылаться на некоторую другую функцию, которая потребовала бы создания файла библиотеки? Кто-либо знает то, что включены другие функции? Есть ли функции, которые сами переносят или называют to_string или from_string?

Единственное включение, которое я использую:

#include 

9
задан mindless.panda 30 June 2011 в 01:00
поделиться

3 ответа

Проект компилируется и связывается без ошибок после следующего устранения неполадок:

Я определил BOOST_LIB_DIAGNOSTIC - чтобы узнать, что диагностический вывод, который я мог получить от автоматического компоновщика. Не слишком информативно:

1> Ссылка на файл библиотеки: libboost_date_time-vc80-mt-1_42.lib
1> ССЫЛКА: фатальная ошибка LNK1104: невозможно открыть файл libboost_date_time-vc80-mt-1_42 .lib '

Затем я определил BOOST_ALL_NO_LIB = 1 - отключает все автоматические ссылки. Теперь проект компилируется и подключается чисто.

Заголовки Boost используют прагму, чтобы сообщить компиляторам, когда искать файл lib. Хотя библиотека date_time этого не делает, другие заголовки в boost зависят от do.

5
ответ дан 4 December 2019 в 10:31
поделиться

boost поставляется с инструментом под названием bcp, который можно использовать для извлечения именно того подмножества, которое вам нужно. взгляните, похоже, вы найдете это полезным.

1
ответ дан 4 December 2019 в 10:31
поделиться

Возможно, вы включаете «неправильный» заголовок, который заставляет компилятор связываться с библиотекой, даже если он вам не нужен. Найдите комментарий #pragma (lib, ...) в заголовках повышения, чтобы узнать, так ли это.

0
ответ дан 4 December 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: