Я установил внешние библиотеки и не могу их связать.
Я щелкаю правой кнопкой мыши "Проект" и нажимаю "Свойства" на всплывающей подсказке. Я настраиваю каталог библиотеки на библиотеку, которую хочу использовать.
Страницы свойств проекта> VC++> Каталоги библиотек _ Добавить каталоги - [добавьте правильный каталог с [имя_библиотеки] .lib]
Страницы свойств проекта> Компоновщик> Ввод> Дополнительные зависимости - [добавить [имя_библиотеки] .lib в список (w ';')]
Он строится нормально, но затем, когда я использую директиву #include, загружаю [my_include] .hpp, он говорит: «Не удается найти исходный код». Но почему он просто не находит библиотеку? Почему поиск по источнику?
Сборка выполняется успешно, если для нее не требуется код, требующий библиотеки. Итак, зависимость соблюдена. Что я делаю неправильно?
Мне тоже нужно делать исходники? Я бы предпочел просто использовать библиотеку.
add: Как отслеживать сборку в Visual Studio C++. В Linux вы можете отслеживать все это на каждом этапе, если хотите.
еще одно добавление: если вам интересно, есть настройки файла журнала сборки в
Инструменты -> Параметры -> Проекты и решения -> MSBuild ...
для проверки.
программа-песочница
#include <iostream>
// squiggly under next line's include
#include <boost/optional.hpp>
int main()
{
std::cout << "Hello World!\n";
}
Проект -> Страницы свойств -> C / C++ -> Общие -> Дополнительные каталоги включения _ установлен в _ C: \ local \ boost_1_68_0;% (AdditionalIncludeDirectories)
где boost_1_68_0 - моя установка библиотеки boost.
Никаких проблем со ссылками, но я хочу убедиться, что они тоже работают.
Нужен ли мне файл, если у меня есть библиотека?
Также необходимо добавить путь к c++ -> General -> Additional Include Directories.
У меня есть (Свойства конфигурации -> Каталоги VC++ -> Включить каталоги) и (Свойства конфигурации -> Каталоги VC++ -> Исходные каталоги). Ищет ли эта вещь подкаталоги, или мне нужно быть конкретным для каждого из них?
Ни того, ни другого. Это глобальные настройки. Скорее всего, вы этого не хотите.
Нашел тот, о котором вы говорили. Есть ли подходящие инструменты? Я буду продолжать, пока он не найдет.
Я хочу использовать (Linker -> Additional Library Directories) вместо библиотек, как я полагаю.
Поиск файлов .hpp не имеет никакого отношения к связыванию. Если только я полностью не понимаю вопрос. Я думаю, вам следует отредактировать свой вопрос и добавить изображение окна с ошибкой или подсказки.
В пути C:\local\boost_1_68_0;%(AdditionalIncludeDirectories) нет включаемой папки. Я ожидаю, что файл optional.hpp будет в C:\local\boost_1_68_0\include\boost\optional.hpp, что означает, что вы должны были добавить C:\local\boost_1_68_0\include в свои подключаемые каталоги, а не C:\local\boost_1_68_0.
Нет каталога "включаемого". Это «путь \ boost_version \ boost \ optional \ optional.hpp», но предполагается, что это просто #include <boost / optional.hpp> в программе.
Когда я просматриваю журнал отладки, я не упоминаю файл, к которому я перешел в свойствах.
добавить: он находится как в 'path \ boost_version \ boost \ optional.hpp', так и в 'path \ boost_version \ boost \ optional \ optional.h' '.
Извините, тогда path\boost_version верен. Убедитесь, что вы изменили настройку Additional Include Directories для всех конфигураций. Параметры независимы для каждой конфигурации (отладка, выпуск ...), когда вы выбираете, вы можете выбрать несколько конфигураций, если хотите.
Я все время оставался в отладке и не касался выпуска, поэтому я сомневаюсь, что это проблема, но я буду уверен. Я думаю, это может быть связано с pch, потому что теперь он находит его в моей целевой программе. Сделал то же самое, работает там, но не там.
Единственная разница, о которой я могу думать, это то, что я сделал консоль с автоматическим pch (бесполезный мусор) и не имел pch с другим. Бьюсь об заклад, это то, что облажалось.
Кстати, спасибо за комментарии.





Включаемые файлы - это отдельная проблема от файлов библиотеки. Включаемые файлы - это текстовый источник, обрабатываемый компилятором, файлы библиотеки - это двоичные данные, передаваемые компоновщику.
На той же странице настроек проекта, на которой вы добавляли каталог библиотеки, также есть строка для путей включения, добавьте каталог, в котором находятся файлы .h для кода, который вы хотите использовать. Убедитесь, что каталог, который вы указали для поиска библиотеки, действительно содержит файлы .lib, в то время как каталог, добавленный для путей включения, содержит файлы .h (или .hpp, или .hxx)
Если вы получаете ошибку «неразрешенный внешний символ» после того, как включаемые файлы были найдены компилятором, вам, вероятно, потребуется добавить фактические файлы библиотеки (сродни директивам #include, но не совсем то же самое), с Visual C++ это можно сделать с помощью комментария #pragma (lib, "") или добавив файлы в строку Linker-> Input-> Additional dependencies в настройках проекта.
Я добавил в свой пост. Я даже не могу заставить работать 'include'!