linux - 如何在 Visual Studio 2017 中为跨平台 Linux 项目链接 Linux 库?
问题描述
我在 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
进入附加依赖项。
推荐阅读
- android - 在 Android Studio/Flutter 中从 Firebase 数据库创建特定集合的字符串列表
- python - 如何使用 gensim 和 pytorch 创建意图分类器(使用 LSTM NN)?
- javascript - 如何在 JavaScript 中将多行字符串值转换为合法的 JSON 字符串变量?
- javascript - 仅打印负数及其和循环和数组
- php - Composer 找不到类...但找到同级文件
- c++ - 反斜杠和引号不计入字符串长度?
- kotlin - Kotlin flatmap 解压数据类列表
- python - 是否有错误的解决方案:condarc invalid yaml 和 ConfigurationLoadError: Unable to load configuration file?
- angular - 动态地将文本墙上的每个单词转换为 Angular 7 中调用角度函数的(点击) - 使用什么?
- spring - 对于 Kotlin 未经检查的异常,Spring 不会回滚事务