Visual Studio 17 C++ Link External Library (ускоренная установка)

Я установил внешние библиотеки и не могу их связать.

Я щелкаю правой кнопкой мыши "Проект" и нажимаю "Свойства" на всплывающей подсказке. Я настраиваю каталог библиотеки на библиотеку, которую хочу использовать.

Страницы свойств проекта> 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.

Никаких проблем со ссылками, но я хочу убедиться, что они тоже работают.

Я пытаюсь загрузить [my_include] .hpp Что вы делаете, чтобы загрузить этот файл? #Include <> вернет совершенно другую ошибку.
drescherjm 05.10.2018 20:21

Нужен ли мне файл, если у меня есть библиотека?

gm9089zo 05.10.2018 20:22
Нужен ли мне файл, если у меня есть библиотека? Вам, вероятно, понадобятся заголовки для компиляции того, что использует библиотеку. Если это .dll, вам также, вероятно, понадобится .lib (библиотека импорта).
drescherjm 05.10.2018 20:23
Мне тоже нужно делать исходники?
drescherjm 05.10.2018 20:24

Также необходимо добавить путь к c++ -> General -> Additional Include Directories.

drescherjm 05.10.2018 20:28

У меня есть (Свойства конфигурации -> Каталоги VC++ -> Включить каталоги) и (Свойства конфигурации -> Каталоги VC++ -> Исходные каталоги). Ищет ли эта вещь подкаталоги, или мне нужно быть конкретным для каждого из них?

gm9089zo 05.10.2018 20:52

Ни того, ни другого. Это глобальные настройки. Скорее всего, вы этого не хотите.

drescherjm 05.10.2018 20:58

Нашел тот, о котором вы говорили. Есть ли подходящие инструменты? Я буду продолжать, пока он не найдет.

gm9089zo 05.10.2018 21:01

Я хочу использовать (Linker -> Additional Library Directories) вместо библиотек, как я полагаю.

gm9089zo 05.10.2018 21:05

Поиск файлов .hpp не имеет никакого отношения к связыванию. Если только я полностью не понимаю вопрос. Я думаю, вам следует отредактировать свой вопрос и добавить изображение окна с ошибкой или подсказки.

drescherjm 05.10.2018 21:06

В пути 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.

drescherjm 05.10.2018 23:10

Нет каталога "включаемого". Это «путь \ boost_version \ boost \ optional \ optional.hpp», но предполагается, что это просто #include <boost / optional.hpp> в программе.

gm9089zo 05.10.2018 23:29

Когда я просматриваю журнал отладки, я не упоминаю файл, к которому я перешел в свойствах.

gm9089zo 05.10.2018 23:31

добавить: он находится как в 'path \ boost_version \ boost \ optional.hpp', так и в 'path \ boost_version \ boost \ optional \ optional.h' '.

gm9089zo 05.10.2018 23:38

Извините, тогда path\boost_version верен. Убедитесь, что вы изменили настройку Additional Include Directories для всех конфигураций. Параметры независимы для каждой конфигурации (отладка, выпуск ...), когда вы выбираете, вы можете выбрать несколько конфигураций, если хотите.

drescherjm 05.10.2018 23:51

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

gm9089zo 06.10.2018 00:03

Единственная разница, о которой я могу думать, это то, что я сделал консоль с автоматическим pch (бесполезный мусор) и не имел pch с другим. Бьюсь об заклад, это то, что облажалось.

gm9089zo 06.10.2018 00:05

Кстати, спасибо за комментарии.

gm9089zo 06.10.2018 00:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
18
961
1

Ответы 1

Включаемые файлы - это отдельная проблема от файлов библиотеки. Включаемые файлы - это текстовый источник, обрабатываемый компилятором, файлы библиотеки - это двоичные данные, передаваемые компоновщику.

На той же странице настроек проекта, на которой вы добавляли каталог библиотеки, также есть строка для путей включения, добавьте каталог, в котором находятся файлы .h для кода, который вы хотите использовать. Убедитесь, что каталог, который вы указали для поиска библиотеки, действительно содержит файлы .lib, в то время как каталог, добавленный для путей включения, содержит файлы .h (или .hpp, или .hxx)

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

Я добавил в свой пост. Я даже не могу заставить работать 'include'!

gm9089zo 05.10.2018 22:31

Другие вопросы по теме