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

标签 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 中的链接器,但它似乎仍然不起作用。

如果我在 Linux 机器上使用 g++ main.cpp -o main -lboost_system 手动编译项目,应用程序构建正确,但这意味着我无法调试应用程序,所以我想得到它在偏远的大楼工作。

有谁知道从 Visual Studio 使用远程构建时如何链接这些库?

最佳答案

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

/usr/lib/libboost_system.a

进入附加依赖项。

关于linux - 如何在 Visual Studio 2017 中为跨平台 Linux 项目链接 Linux 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51809144/

相关文章:

linux - Linux 中带有解析参数的 Bash 脚本

html - 在 Visual Studio Code 上添加 Django 模板键时,Html 文件中的双引号未匹配

c++ - 尽管与 boost_system 链接,但对 boost::system::generic_category 的 undefined reference

c++ - undefined symbol boost::system:detail::system_category_instance

c++ - 哪些 Boost.Asio 调用返回哪些 Boost 错误代码/条件?

php - 获取目录的最后修改时间

php - 浏览器关闭 session 中的 Opencart 保持不变,但购物车中没有商品

linux - 为什么我无法在 NASM 程序集中打印用户输入的数据?

visual-studio - Resharper vs2013 CTRL +单击不起作用

.net - Visual Studio 编译时间统计