Сборка с Boost через Visual Studio не позволяет выбрать правильную версию VS или статически связанные библиотеки - PullRequest
0 голосов
/ 15 мая 2009
#include <boost/regex.hpp>

int main(void)
{
    return 0;
}

Ошибка 2: фатальная ошибка LNK1104: невозможно открыть файл 'libboost_regex-vc90-mt-gd-1_38.lib'

Это не проблема пути. У меня намеренно нет встроенного .lib, и я хочу связать его с файлом mt-sgd-1_38.lib, но я не знаю, что мне нужно установить, чтобы автоматическое именование boost выбирало mt-sgd вместо mt -GD.

Кроме того, я не уверен, как он обнаруживает использование vc90, но я пытаюсь собрать с VS 2005, который vc80.

Ответы [ 3 ]

1 голос
/ 15 мая 2009

Я считаю, что флаг ('s') указывает на статическое связывание; то есть: статическое связывание библиотек c-runtime. Это будет настройка проекта для вашего приложения.

Кроме того, для проблемы v80 / v90 у меня было подобное, когда у меня был установлен компилятор v90 с некоторой частью SDK платформы. Если вы получаете v90 в имени объекта компоновщика, скорее всего, вы на самом деле строите его с помощью компилятора v90 (что возможно в 2005 IDE, в зависимости от настроек пути и того, что установлено). Не должно быть проблемой, если все совпадает.

0 голосов
/ 24 июля 2014

Для меня работало использование этой опции при сборке: runtime-link = static, как в

.\b2 runtime-link=static
0 голосов
/ 29 ноября 2011

Попробуйте добавить BOOST_LIB_DIAGNOSTIC к препроцессору, я использовал это ранее, чтобы выяснить подобные проблемы, однако у меня обычно была противоположная проблема. Он пытается статический, и я хочу динамический, я исправил это в последний раз, добавив BOOST_THREAD_USE_DLL, должны быть другие эквиваленты - я предполагаю, что вы просто заменяете THREAD на имя используемой вами библиотеки.

...