Как подключать сторонние библиотеки C/C++ в VS Code?
Нашёл кучу информации о том, как подключать сторонние библиотеки C/C++ к Microsoft VS, но ничего про Visual Studio Code. Редактор сильно отличается, руководств в интернете совсем немного(про сторонние библиотеки вообще ни одного не нашёл), очень хочу поработать в этом редакторе, но никак не могу разобраться, как же подсоединить к проекту внешнюю библиотеку. Желательно показать на примере библиотеки SFML или OpenGL. Буду крайне благодарен за хоть какой-нибудь ответ!
Отслеживать
задан 20 авг 2020 в 14:21
lie_is_a_cake lie_is_a_cake
21 1 1 серебряный знак 3 3 бронзовых знака
Первое что попалось programmersought.com/article/1263524392
20 авг 2020 в 14:35
а какой отношение имеют подключаемые библиотеки к редактору? Используйте например cmake для построения зависимость и не привязывайте себя цепью к редактору
20 авг 2020 в 15:17
VS поставляется со своим компилятором, поэтому для нее и инструкции по подключению библиотек отдельные. VSC сама по себе не связана ни с каким компилятором. Гуглите не про VSC, а про ваш компилятор (скорее всего MinGW GCC), и разберитесь как компилировать код с библиотеками в командной строке. Потом сможете вписать ту же команду в настройки VSC, и все.
Подключение и использование библиотек в Visual Studio
В качестве примера мы рассмотрим подключение библиотеки SDL к нашему проекту в Visual Studio 2017 (работать будет и с более новыми версиями Visual Studio).
Оглавление:
- Шаг №1: Создаем папку для хранения библиотеки
- Шаг №2: Скачиваем и устанавливаем библиотеку
- Шаг №3: Указываем путь к заголовочным файлам библиотеки
- Шаг №4: Указываем путь к файлам с реализацией библиотеки
- Шаг №5: Копируем dll-ку в папку с проектом
- Шаг №6: Тестируем
Шаг №1: Создаем папку для хранения библиотеки
Создаем папку Libs на диске C ( C:\Libs ).
Шаг №2: Скачиваем и устанавливаем библиотеку
Заходим на сайт https://www.libsdl.org/download-2.0.php, пролистываем вниз до «Development Libraries» и скачиваем SDL2-devel-2.0.9-VC.zip (Visual C++ 32/64-bit). После успешного скачивания нужно разархивировать этот архив в папку Libs .
Шаг №3: Указываем путь к заголовочным файлам библиотеки
Открываем свой любой проект в Visual Studio или создаем новый, переходим в «Обозреватель решений» > кликаем правой кнопкой мыши (ПКМ) по названию нашего проекта > «Свойства» :
В «Свойства конфигурации» ищем вкладку «С/С++» > «Общие» . Затем выбираем пункт «Дополнительные каталоги включаемых файлов» > нажимаем на стрелочку в конце > «Изменить» :
В появившемся окне кликаем на иконку с изображением папки, а затем на появившееся троеточие:
Заголовочные файлы находятся в папке include внутри нашей библиотеки, поэтому переходим в нее ( C:\Libs\SDL2-2.0.9\include ) и нажимаем «Выбор папки» , а затем «ОК» :
Шаг №4: Указываем путь к файлам с реализацией библиотеки
Переходим на вкладку «Компоновщик» > «Общие» . Ищем пункт «Дополнительные каталоги библиотек» > нажимаем на стрелочку в конце > «Изменить» :
Опять же, нажимаем на иконку с папкой, а затем на появившееся троеточие. Нам нужно указать следующий путь: C:\Libs\SDL2-2.0.9\lib\x86 . Будьте внимательны, в папке lib находятся две папки: x64 и x86 . Даже если у вас Windows разрядности x64, указывать нужно папку x86 . Затем «Выбор папки» и «ОК» :
После этого переходим в «Компоновщик» > «Ввод» . Затем «Дополнительные зависимости» > нажимаем на стрелочку в конце > «Изменить» :
В появившемся текстовом блоке вставляем:
Затем переходим в «Компоновщик» > «Система» . После этого «Подсистема» > нажимаем на стрелочку вниз > выбираем «Консоль (/SUBSYSTEM:CONSOLE)» > «Применить» > «ОК» :
Шаг №5: Копируем dll-ку в папку с проектом
Переходим в папку x86 ( C:\Libs\SDL2-2.0.9\lib\x86 ), копируем SDL2.dll и вставляем в папку с вашим проектом в Visual Studio. Чтобы просмотреть папку вашего проекта в Visual Studio, нажмите ПКМ по названию вашего проекта > «Открыть содержащую папку» :
Затем вставляем скопированный файл (SDL2.dll) в папку с проектом (где находится рабочий файл .cpp):
Шаг №6: Тестируем
Теперь, чтобы проверить, всё ли верно мы сделали — копируем и запускаем следующий код:
int main ( int argc , char * argv [ ] )
if ( SDL_Init ( SDL_INIT_EVERYTHING ) < 0 )
std :: cout << "SDL initialization failed. SDL Error: " << SDL_GetError ( ) ;
std :: cout << "SDL initialization succeeded!" ;
std :: cin . get ( ) ;
Если результат следующий:
SDL initialization succeeded!
Значит мы успешно подключили библиотеку SDL к нашему проекту!
Если вы получили какую-либо ошибку, то внимательно повторите все вышеприведенные действия, но уже с новым проектом. Скорее всего вы что-то пропустили или указали неверные пути к папкам.
(136 оценок, среднее: 4,70 из 5)
Статические и динамические библиотеки
C++11. Нововведения
Комментариев: 13
Спустя время вернулся чтобы порекомендовать ЛУЧШИЙ метод подключения сторонник библиотек в Visual Studio. Рассмотрим на примере весьма полезной библиотеки длинной арифметики gmp, а точнее ее брата близнеца для windows — mpir! Установка vcpkg Для установки любой библиотеки, которую создала более-менее приличная компания вам понадобится только vcpkg. Для установки vcpkg открываем Visual Studio > Git > Клонировать репозиторий . В расположение репозитория указываем https://github.com/microsoft/vcpkg Путь указываем на свое усмотрение, у меня это C:\vcpkg Нажимаем «Клонировать» и ожидаем завершения процесса. Получаем сообщение о том, что один или несколько объектов небыли загружены, ничего страшного. Можно закрыть Visual Studio. Открываем командную строку, для тех кто не знает как это сделать: нажимаем Win+R и в окошке «Выполнить» пишем: cmd В командной строке: cd C:\vcpkg (или путь, который вы указали для vcpkg в Visual Studio). В итоге рабочая папка командной строки должна измениться на путь к вашей vcpkg. (в данном случае C:\vcpkg ). В командной строке пишем: bootstrap-vcpkg.bat — Ожидаем окончания процесса. В командной строке: vcpkg integrate install — Ожидаем окончания процесса. На этом установка vcpkg завершена, теперь мы можем его использовать для установки любой библиотеки (о которой он знает, конечно же, а таких бесконечно много). Установка библиотек Теперь установка самой библиотеки. Открываем Visual Studio, консольный проект и пишем #include , например в моем случае: #include , такой библиотеки в моем Visual Studio еще нет, но vcpkg сразу предлагает ее установить. Возле вашего #include появляется помощник vcpkg и предлагает скопировать команду для установки библиотеки в буфер обмена, нажимаем ее. Открываем командную строку, переходим в рабочую папку vcpkg: ( Win+R , в окошке «Выполнить»: cmd , в командной строке: cd C:\vcpkg или путь к вашему vcpkg) Теперь, когда мы в командной строке находимся в рабочей папке с vcpkg вводим команду из буфера обмена, которую мы получили в Visual Studio, в моем случае для библиотеки GMP она выглядит так: vcpkg install mpir:x64-windows Ожидаем окончания процесса (может занять несколько минут). Открываем Visual Studio, можем использовать #include Прелесть метода заключается в том, что вам не нужно линковать библиотеку или делать какие либо настройки вашего проекта кроме непосредственного подключения библиотеки с помощью #include
Это касается всех проектов и всех библиотек, которые знает vcpkg. Использовал Visual Studio Enterprise 2022.
Сработало только с версией х64, видимо для тех у кого 64-битная IDE нужно делать так же.
Юрий! Статья несомненно хорошая, но не полная и с недочётом.
Недочёт в следующем: не учтён конфигуратор решений. Если в конфигурации будет «Debug», а в изменяемых свойствах стоять «Relase», то всё сделаешь правильно, а файл с библиотекой найден не будет.
Кроме того, хоть пару слов желательно было бы услышать о том, зачем выполнять тот или иной пункт, так как тогда легче было бы повторить всё это в другой ситуации. Но, всё равно, большое спасибо за статью, помогла!
Проблема при импорте библиотек в Visual Studio Code
Хочу использовать библиотеку pyfiglet
С помощью pip install установил её
В консоли проверил работоспособность библиотеки, все работает, а значит импортировалось нормально вроде
Но вот в Visual Studio Code при использовании строки
from pyfiglet import Figlet
возникает ошибка Import «pyfiglet» could not be resolved Pylance (reportMissingImports)
Помню раньше была такая же проблема с requests, но проблему решил, а как решил не помню и найти не могу
Помогите пожалуйста
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Проблема при установке Visual Studio: error code 2324
В общем у меня отказал дизайн формы, после удаления программы при установке пишет error code 2324.
Проблема с Visual Studio Code
привет, больше не работает Format Document With / HTML Language Features.выделяется целая.
Проблема Debug в Visual Studio Code
Здрасьте. Пытаюсь запустить код в Visual Studio Code через Run => Start Debugging => Chrome.
Проблема с wsl в Visual studio code
Всем привет!Относительно недавно начал кодить на Vscode B Windows ,и вот сегодня при втором запуске.
Почему у меня MASM32 не правильно работает в Visual studio когда уже установлен внутри настройки visual studio code ?
Почему у меня MASM32 не правильно работает в Visual studio когда уже установлен внутри настройки.
Регистрация: 26.10.2021
Сообщений: 5
Уже не нужна помощь все таки нашёл как исправить
Файл — Настройки — Параметры — Расширения — Pylance и добавил Extra Paths до папки с библиотеками
Извините, за беспокойство
Регистрация: 26.10.2021
Сообщений: 5
По всей видимости проблема не решилась, так как теперь вместо Import «pyfiglet» could not be resolved Pylance (reportMissingImports) пишет что нет модуля с таким именем при запуске кода, хотя пока писал сам код VS Code не жаловался(
Снова помогите
Am I evil? Yes, I am!
18968 / 9663 / 2710
Регистрация: 21.10.2017
Сообщений: 21,473
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Зачем для создания формы на Angular использовать Visual Studio и Visual Studio Code?
Мне нужно написать форму на ангуляре, которая будет выполнять Select, Insert,Delete из базы данных.
при компиляции проэкт невидит библиотек фреймворка(Visual studio 2010)
Подключил библиотеки к проэкту путём — (нажмите правой кнопкой на «Ссылки в дереве объектов».
Ошибка при отладке Unity и Visual Studio Code
Сначала запускаю отладку в Visual Studio Code, потом нажимаю воспроизведение в самой Unity в окне.
При выделении добавить тег (visual studio code)
Доброго времени суток, подскажите пожалуйста, как при выделении текста в visual studio code.
Неполадки при вставке текста в Visual Studio Code
Добрый день! Не знаю, в какой раздел писать, но проблема касается sass, а значит, css подойдёт. .
Чем отличается Visual Studio Community и Visual Studio Code?
в чем разница Visual Studio Code или Visual Studio Community. Описание на англиском где я полный.
Visual Studio Code (Русский)
Состояние перевода: На этой странице представлен перевод статьи Visual Studio Code. Дата последней синхронизации: 18 апреля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Code — кроссплатформенный текстовый редактор, разрабатываемый Microsoft, основанный на фреймворке Electron. Visual Studio Code — бинарный дистрибутив, основанный на коде из репозитория Code — OSS, имеющий дополнительные изменения от Microsoft и распространяемый на условиях проприеатрной лицензии (подробнее о лицензировании написано в этом комментарии на GitHub). Также есть поддерживаемый сообществом и распространяемый по лицензии MIT форк VSCodium с отключенной по умолчанию телеметрией.
Установка
Редактор VSCode доступен для установки с помощью следующих пакетов:
- Code — OSS — Свободная сборка из официального репозитория code-oss.
- Visual Studio Code — Проприетарная сборка от Microsoft.
- VSCodium — Поддерживаемый сообщством форк с лицензией MIT.
Разница между «Code — OSS» (open-source) и «Visual Studio Code» (сборка от Microsoft без исходного кода) описана здесь.
Поддержка расширений
Использование Microsoft marketplace для расширений ограничено продуктами семейства Visual Studio Code. Следовательно, он не может быть использован в Code-OSS (смотрите FS#67780).
Пакеты code и vscodium-bin AUR / vscodium AUR / vscodium-git AUR настроены на использование Open VSX registry, поддерживаемого Eclipse Foundation. Это объясняет, почему Code-OSS не может найти некоторые расширения.
Известные способы решения проблемы следующие:
- вручную установить расширение из его файла .vsix , который можно получить в Microsoft Visual Studio Code Marketplace;
- попросить сопровождающего загрузить расширение в Open VSX registry;
- добавить Microsoft Visual Studio Code Marketplace с помощью одного из следующих пакетов, относящихся к используемой вами сборке: code-marketplaceAUR / vscodium-bin-marketplaceAUR / vscodium-marketplaceAUR . Эти пакеты устанавливают хук pacman, который патчит файл product.json , как показано в этом комментарии на GitHub, после каждого обновления пакета. Обратите внимание, что использование Microsoft Marketplace таким образом не соответствует его условиям использования.
Использование
Если требуется запустить несколько экземпляров приложения, добавьте ключ -n без параметров.
Настройка
Пакет code хранит конфигурацию в файле ~/.config/Code — OSS/User/settings.json .
Пакет visual-studio-code-bin AUR хранит конфигурацию в файле ~/.config/Code/User/settings.json .
vscodium AUR и связанные пакеты хранят конфигурацию в файле ~/.config/VSCodium/User/settings.json .
При миграции с Code на Codium (или наоборот) каталог настроек может быть скопирован или перемещён, поскольку они имеют общую кодовую базу и настройки совместимы.
Встроенный терминал
Меню Вид > Терминал или Ctrl + ` открывает встроенный терминал. По умолчанию используется Bash без каких-либо параметров, но настройки, указанные далее позволяют изменить данное взаимодействие.
- terminal.integrated.shell.linux устанавливает терминал по умолчанию
- terminal.integrated.shellArgs.linux устанавливает передаваемые в терминал аргументы
Например, установить по умолчанию fish с параметрами.
~/.config/Code/User/settings.json
"terminal.integrated.shell.linux": "/usr/bin/fish", "terminal.integrated.shellArgs.linux": ["--login","--debug-level 3"]
Вы можете столкнуться со странными запросами при установке встроенного терминала, удалением некоторых строк, поэтому рекомендуется либо не использовать аргументы, либо использовать внешний терминал.
Внешний терминал
Если вы используете Terminator как терминал по умолчанию, у вас могут возникнуть проблемы в VS Code с ошибками вида: Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT , поэтому следует сменить терминал на другой, например, gnome-terminal .
Строка настроек «terminal.external.linuxExec»: «имя терминала» установит терминал на требуемый. Пример установки gnome-terminal :
~/.config/Code/User/settings.json
"terminal.external.linuxExec": "gnome-terminal"
Решение проблем
Глобальное меню не работает в KDE Plasma
Visual Studio Code использует D-Bus для меню, поэтому для него следует установить пакет libdbusmenu-glib .
Невозможно переместить объект в корзину
По умолчанию все приложения, использующие Electron, используют gio для удаления. В Plasma используется kioclient5 . Другой инструмент удаления можно выбрать с помощью переменной окружения ELECTRON_TRASH .
Например, для удаления с помощью trash-cli :
$ ELECTRON_TRASH=trash-cli code
Однако, в новых версиях Electron поддерживает и kioclient5 , и kioclient , и trash-cli , и gio (по умолчанию), и gvfs-trash (отмечен устаревшим). Смотрите также страницу environment-variables в GitHub репозитории Electron.
Невозможно отладить C#
Для отладки приложений на C# (платформа .NET) испольуется расширение OmniSharp, которое требует проприетарный компонент .NET Core Debugger (смотри пакеты в разделе установка). Смотри также объяснение в репозитории GitHub.
Если вы используете свободный пакет, отладка упадёт почти незаметно, лишь оставив в консоли сообщение:
You may only use the Microsoft .NET Core Debugger (vsdbg) with Visual Studio Code, Visual Studio or Visual Studio for Mac software to help you develop and test your applications.
Для отладки в свободном пакете можно использовать пакет netcoredbg AUR . Чтобы использовать его для отладки проектов, требуется в настройке проекта указать соответствующую конфигурацию, например:
./.vscode/launch.json
"configurations": [ < . "pipeTransport": < "pipeCwd": "$", "pipeProgram": "/usr/bin/bash", "pipeArgs": ["-c"], "debuggerPath": "/usr/bin/netcoredbg" > .
Невозможно открыть .csproj с сервером OmniSharp, ошибка расположения Microsoft.Common.props
Требуется сменить путь к SDK. Вот, как выглядит файл до изменений.
/opt/dotnet/sdk//Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props
Вот, как выглядит файл после изменения.
/opt/dotnet/sdk//Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
/opt/dotnet/sdk//Current/Microsoft.Common.props
OmniSharp не может обнаружить MSBuild
На странице OmniSharp introduction в GitHub написано, что пользователям Arch Linux требуется установить mono-msbuild . Ошибка, которая появляется при отсутствии пакета:
OmniSharp Log
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Registered MSBuild instance: StandAlone 15.0 - "~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin" MSBuildExtensionsPath = /usr/lib/mono/xbuild BypassFrameworkInstallChecks = true CscToolPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin/Roslyn CscToolExe = csc.exe MSBuildToolsPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin TargetFrameworkRootPath = /usr/lib/mono/xbuild-frameworks System.TypeLoadException: Could not load type of field 'OmniSharp.MSBuild.ProjectManager:_queue' (13) due to: Could not load file or assembly 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. .
Возможно, потребуется собрать пакет самостоятельно.
Omnisharp поставляется со своей собственной версией mono, поэтому, если он не может найти установленную версию, если вы хотите сказать omnisharp искать «глобальный» mono, установленный на вашей машине, поместите это в ваш settings.json:
settings.json
"omnisharp.useGlobalMono:"always"
«Повторить попытку в режиме Sudo» не работает
К сожалению, пакет code не поддерживает эту функцию в полной мере, так как официально Microsoft не поддерживает пакет для Arch Linux. Смотри также FS#61516 или тикет на GitHub.
Проблемы с сопоставлением клавиш
Переключение раскладок клавиатуры в некоторых оконных менеджерах Linux не приводит к обновлению низкоуровневых оконных API X, которые VS Code использует для получения текущей раскладки клавиатуры. Это означает, что VS Code иногда считывает одну из других настроенных раскладок клавиатуры, а не текущую активную.
Согласно вики, есть два возможных решения:
- убедитесь, что setxkbmap -query возвращает в качестве первой раскладки клавиатуры ту, с которой вы хотите работать в VS Code.
- укажите «keyboard.dispatch»: «keyCode» в настройках и перезапустите VS Code. Это предотвратит попытки VS Code определить раскладку клавиатуры.
Команда «. » не найдена
В официальной сборке VS Code есть файл product.json со списком расширений, которым разрешено использовать определённые API. Однако этого файла нет в OSS-сборке code [1]
Для включения определённых API могут потребоваться некоторые флаги. [2] Вы можете либо запустить code с этими флагами, либо добавить соответствующие записи в раздел extensionAllowedProposedApi в файле product.json (пакет code устанавливает его в /usr/lib/code/product.json ).
"extensionAllowedProposedApi": [ "ms-vsliveshare.vsliveshare", "ms-vscode.node-debug", "ms-vscode.node-debug2" ]
Также можно установить пакет code-features AUR , который устанавливает хук pacman, исправляющий этот файл при каждом обновлении пакета. В качестве альтернативы вы можете установить проприетарные сборки от Microsoft: visual-studio-code-bin AUR , visual-studio-code-insiders-bin AUR .
VS Live Share missing API
Отредактируйте product.json , или запустите VS Code с опцией:
$ code --enable-proposed-api ms-vsliveshare.vsliveshare
Команда ‘remote-containers.openFolder’ не найдена
Для решения проблемы требуется открыть VS Code со включённым API remote-containers (см. баг FS#63374)
$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers
Command ‘GitHub Pull Requests: Configure Remotes. ‘ resulted in an error (command ‘pr.configureRemotes’ not found)
Запустите VS Code с опцией:
$ code --enable-proposed-api GitHub.vscode-pull-request-github
Git: ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory
Эта ошибка возникает из-за зашифрованного ssh-ключа, и её можно решить, установив какой-нибудь провайдер диалога, например SSH keys#x11-ssh-askpass или альтернативы, перечисленные там, например ksshaskpass для KDE.
Следует отметить, что для ksshaskpass, например, вам потребуется сделать ссылку на него из /usr/lib/ssh/ssh-askpass , чтобы VSCode нашёл его:
# ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
Обрезанные символы во встроенном терминале
Слишком широкие символы могут обрезаться. Например, курсивный полужирный текст в стек-трейсах Deno.
Этого можно избежать, установив для параметра «terminal.integrated.rendererType» значение «experimentalWebgl».
No such interface“org.freedesktop.Secret.Collection”
Аутентификация на Github через VSCodium не работает
При подключении аккаунта Github измените «vscodium» на «vscode» в URL, как показано в этом комментарии. Затем скопируйте идентификационный токен в VSCodium.
Внешний вид диалога выбора файла не согласован с внешним видом системы
На данный момент vscodium использует диалог gtk даже в kde. Смотрите Единый вид приложений Qt и GTK#Согласованный диалог выбора файлов для более подробной информации.