Как связать библиотеки Linux для кроссплатформенного проекта Linux в Visual Studio 2017?
Я работаю в Windows и использую кросс-платформенный проект для Linux в сообществе Visual Studio 2017. Я пытаюсь построить свой проект, но по какой-то причине библиотека не обнаружена или используется неправильно.
1>Linking objects
1>/home/ubuntu/projects/LinuxApplication/obj/x64/Debug/main.o: In function `__static_initialization_and_destruction_0(int, int)':
1>/usr/include/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()'
1>/usr/include/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
1>/usr/include/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()'
1>/home/ubuntu/projects/LinuxApplication/obj/x64/Debug/main.o: In function `boost::system::error_code::error_code()':
1>/usr/include/boost/system/error_code.hpp:322: undefined reference to `boost::system::system_category()'
1>/home/ubuntu/projects/LinuxApplication/obj/x64/Debug/main.o: In function `boost::asio::error::get_system_category()':
1>/usr/include/boost/asio/error.hpp:230: undefined reference to `boost::system::system_category()'
1>collect2: error: ld returned 1 exit status
1>C:\Users\user\source\repos\LinuxApplication\obj\x64\Debug\main.o : error :
1>/usr/include/boost/system/error_code.hpp:221: undefined reference to `boost::system : error : generic_category()'
1>/usr/include/boost/system/error_code.hpp:222: undefined reference to `boost::system : error : generic_category()'
1>/usr/include/boost/system/error_code.hpp:223: undefined reference to `boost::system : error : system_category()'
1>C:\Users\user\source\repos\LinuxApplication\obj\x64\Debug\main.o: In function `boost::system::error_code: : error :
1>/usr/include/boost/system/error_code.hpp:322: undefined reference to `boost::system : error : system_category()'
1>C:\Users\user\source\repos\LinuxApplication\obj\x64\Debug\main.o: In function `boost::asio::error: : error :
1>/usr/include/boost/asio/error.hpp:230: undefined reference to `boost::system : error : system_category()'
1>collect2 : error : ld returned 1 exit status
1>Done building project "LinuxApplication.vcxproj" -- FAILED.
После прочтения некоторых сообщений SO это происходит потому, что библиотека libboost_system
не может быть найден, однако он определенно присутствует в /usr/lib/libboost_system.a
но по какой-то причине сборка не ссылается на это. Я пытался добавить библиотеку к компоновщику в Visual Studio, но она все еще не работает.
Если я скомпилирую проект вручную на машине Linux, используя g++ main.cpp -o main -lboost_system
приложение собирается правильно, но это означает, что я не могу отладить приложение, поэтому я бы хотел, чтобы оно работало для удаленного здания.
Кто-нибудь знает, как связать эти библиотеки при использовании удаленной сборки из Visual Studio?
1 ответ
Кажется, из Visual Studio необходимо указать полный путь к библиотеке в компоновщик. Так что для моего случая я должен был добавить
/usr/lib/libboost_system.a
в дополнительные зависимости.