Я создал небольшой чат-сервер, который я без проблем протестировал и скомпилировал в 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
Кто-нибудь знает, как правильно включить библиотеки?





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 достаточно.
bootstrap.sh запрашивает конфигурацию вашей системы, чтобы создать командный файл b2, адаптированный для вас и библиотек, которые вы хотите установить. Если вы загружаете Boost прямо с www.boost.org, вам следует следовать этому маршруту. Если вы устанавливаете Boost из своего дистрибутива, с apt-get и т. д., То библиотека уже построена для стандартной конфигурации вашего дистрибутива. Имейте в виду, что библиотеки, предоставляемые дистрибутивом, часто отстают на несколько версий.
@VTT Все делал по этому туториалу: boost.org/doc/libs/1_61_0/more/getting_started/… (Шаг 5.1). Так что это должно быть полным.