如何在Visual Studio 2017中为跨平台Linux项目链接Linux库?

时间:2018-08-12 13:12:36

标签: linux visual-studio boost-system

我在Windows上,并且在Visual Studio 2017社区中使用针对Linux的跨平台项目构建。我正在尝试构建我的项目,但是由于某种原因,未检测到库或库没有正确使用。

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中的链接器中,但它似乎仍然无法正常工作。

如果我使用g++ main.cpp -o main -lboost_system在Linux机器上手动编译项目,则应用程序可以正确构建,但这意味着我无法调试该应用程序,因此我希望它可以用于远程构建。

在使用Visual Studio的远程版本时,有人知道如何链接这些库吗?

1 个答案:

答案 0 :(得分:1)

从Visual Studio看来,您需要在链接器中指定库的完整路径。所以对于我来说,我必须添加

/usr/lib/libboost_system.a

进入其他依赖项。

相关问题