2015-11-21 6 views
0

Я загрузил библиотеку boost и хочу включить ее в visual C++, но после копирования в куске примера кода с сайта boost я получаю сообщение об ошибкеLNK1104 не может открыть файл libboost_regex-vc100-mt-gd-1_54

"LNK1104 не может открыть файл 'libboost_regex-VC100-мт-Г.Д.-1_54"

файл, безусловно, существует. Я предполагаю, что он был создан, когда я побежал самозагрузки команду в командной строке, который я следовал из руководства https://www.youtube.com/watch?v=6trC5zVXzG0

Пример файла я использую следующим образом:

#include <boost/regex.hpp> 
#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string line; 
    boost::regex pat("^Subject: (Re: |Aw:)*(.*)"); 
    while (cin) 
    { 
     getline(cin, line); 
     boost::smatch matches; 
     if (boost::regex_match(line, matches, pat)) 
      cout << matches[2] << endl; 
    } 
    return 0; 
} 

Мне очень жаль, но Я знаю, что этот вопрос появился несколько раз при переполнении стека, но я пробовал большинство решений, которые я видел, и ошибка все еще существует.

Внутри разработчика решений на Visual C++ 2015, я пишу, кликнув по моему проекту, а затем щелкните по свойствам, а затем на вкладке «Каталоги VC++» я добавил каталог «C: \ Program Files \ Boost» в список каталогов , и каталог «C: \ Program Files \ Boost \ stage \ lib» в библиотечные каталоги. Но проблема все еще существует. Аналогичные вопросы в стек попросили добавить каталог «C: \ Program Files \ Boost \ stage \ lib» в дополнительные каталоги Include под общей вкладкой под вкладкой C/C++ и в дополнительные каталоги Include под вкладкой «Общие» внутри вкладку Linker. Но все эти изменения не повлияли на ошибку. Другое решение в стеке добавило директорию «C: \ Program Files \ Boost \ stage \ lib» к дополнительным зависимостям под вкладкой ввода на вкладке Linker, но когда я сделал это, ошибка изменилась на:

" LNK1104 не могу открыть файл C: \ Program Files \ подталкивания \ этапа \ lib.ob '»

я не уверен, если это улучшение с ошибкой или не

Так после попытки всех этих решений, казалось, работал для других людей, я продолжаю получать ту же ошибку. Так кто-нибудь знает, что может быть причиной ошибки.

+0

Я добавил в libboost_regex-VC100-мт-Gd-1_54.lib; в свойство Additonal dependencies в свойствах конфигурации -> Linker -> Input. Похоже, что эта ошибка изменилась на 4 новые ошибки: «LNK2038 Несоответствие обнаружения для« _MSC_VER »: значение« 1600 »не соответствует значению« 1900 »в stdafx.obj " – user217339

+0

Попробуйте перестроить библиотеку (http://stackoverflow.com/questions/31566807/how-to-build-boost-version-1-58-0-using-visual-studio-2015-enterprise). C++ 2015 == v140, и вы связываетесь с версией vc100. –

ответ

0

У вас возникает ошибка LNK, а это значит, что что-то не хватает из ваших свойств Linker. Убедитесь, что вы добавили папку boost и папку boost \ stage \ lib в свойства проекта> конфигурация> компоновщик> «Дополнительные библиотечные каталоги».

Также обратите внимание, что если вы используете Visual Studio 2015, вы, вероятно, должны сгенерировать бинарные файлы boost, используя msvc-14.0, а не msvc-10.0. В противном случае свойство Platform Toolset должно быть установлено на v100 (по умолчанию будет v140). Вы изменяете этот параметр из «Свойства проекта»> «Конфигурация»> «Основные»> «Набор инструментов платформы», но вам нужно будет установить эту версию визуальной студии.

0

Если ответ Aciel не решил вашу проблему (потому что я видел, что вы еще не приняли этот ответ), я считаю, что это связано с тем, что вы скомпилируете ваш boost lib в 32-разрядный, и используете их в 64- бит. Если это так, пожалуйста, попробуйте

bjam --toolset=msvc-14.0 --build-type=complete address-model=64 

пересобрать повысить LIB до 64-бит