Как добавить библиотеки ускорения в проект Visual Studio Linux?

Я создал небольшой чат-сервер, который я без проблем протестировал и скомпилировал в Windows. Следующим шагом будет установка этого сервера на мой Raspberry Pi. Но в этот момент я получаю много ошибок.

Я создал проект Visual Studio Remote Linux, который я подключил к своему Raspberry Pi. Я думаю, что компилятор не может найти библиотеки.

Некоторые ошибки, которые я получаю (всего ошибок около 700):

-Error (active) E0304 no instance of overloaded function "boost::asio::buffer" matches the argument list -Error (active) E0020 identifier "sa_family_t" is undefined VoiceChatServer -Error (active) E0059 function call is not allowed in a constant expression -Error (active) E2778 builtin function is not available because vector types are not supported -Error (active) E0035 #error directive: Only Windows, POSIX and std::thread are supported!

Мои свойства проекта выглядят так: Каталоги VC++> Включить каталоги: C: \ Program Files \ Cpp_Libs \ boost_1_66_0, / дома / пи / boostPrefix / включить /, C: \ includeLinux \ include, / usr / include /

C / C++> Дополнительные каталоги включения: C: \ Program Files \ Cpp_Libs \ boost_1_66_0, / дома / пи / boostPrefix / включить /, C: \ includeLinux \ include, / usr / include /

Компоновщик> Дополнительные каталоги библиотеки: / home / pi / boostPrefix / lib /, C: \ Program Files \ Cpp_Libs \ boost_1_66_0 \ stage \ lib

Кто-нибудь знает, как правильно включить библиотеки?

@VTT Все делал по этому туториалу: boost.org/doc/libs/1_61_0/more/getting_started/… (Шаг 5.1). Так что это должно быть полным.

MooN_Tiga 18.04.2018 13:56
Стоит ли изучать 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
1
1 927
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

boost :: asio - это библиотека только для заголовков, т.е. вы просто указываете путь к источнику boost :: asio в пути к каталогу include, но он зависит от некоторых других библиотек со скомпилированными двоичными файлами (объектными файлами). Вы должны указать эти дополнительные библиотеки в проекте Visual Studio в разделе Linker - Input - Library Dependencies. Например. в случае Boost.System укажите boost_system, и компоновщик добавит префикс lib и расширение .a или .so.

Это что-то дополнительное, что вы должны сделать в Linux, в Windows Boost автоматически добавляет ссылки на библиотеки с помощью директивы Visual Studio.

Мне любопытно, как вы установили Boost; мне кажется, что ваш путь включения на удаленном компьютере Linux - /home/pi/boostPrefix/include. Если вы следовали стандартной процедуре установки Boost (boostrap.sh и b2), заголовки Boost будут в /.../boost_1_66_0/boost/asio, путь включения, который вы укажете в проекте Visual Studio C/C++ > Additional Include Directories, будет /.../boost_1_66_0, а в вашем коде C++ вы напишете #include <boost/asio>

Кстати, указывать /usr/include в пути к библиотеке не нужно, GCC по умолчанию смотрит туда.

Вы спасли меня. Я с утра бился головой. Простите за незнание, но я так и не понял, что толку от bootstrap.sh и приставки? зачем нам устанавливать b2? Я считаю, что одной команды apt-get достаточно.

sonu gupta 31.08.2018 05:22
bootstrap.sh запрашивает конфигурацию вашей системы, чтобы создать командный файл b2, адаптированный для вас и библиотек, которые вы хотите установить. Если вы загружаете Boost прямо с www.boost.org, вам следует следовать этому маршруту. Если вы устанавливаете Boost из своего дистрибутива, с apt-get и т. д., То библиотека уже построена для стандартной конфигурации вашего дистрибутива. Имейте в виду, что библиотеки, предоставляемые дистрибутивом, часто отстают на несколько версий.
stanthomas 31.08.2018 23:10

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