c++ - 如何将 boost 库添加到 Visual Studio Linux 项目中?

标签 c++ linux visual-studio boost

我创建了一个小型聊天服务器,我在 Windows 上测试和编译它没有任何问题。下一步是将此服务器放在我的 Raspberry Pi 上。但那时我遇到了很多错误。

我创建了一个 Visual Studio 远程 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, /home/pi/boostPrefix/include/, C:\includeLinux\include, /usr/包含/

C/C++ > 附加包含目录:C:\Program Files\Cpp_Libs\boost_1_66_0, /home/pi/boostPrefix/include/, C:\includeLinux\include, /usr/包含/

链接器 > 附加库目录:/home/pi/boostPrefix/lib/, C:\Program Files\Cpp_Libs\boost_1_66_0\stage\lib

有人知道如何正确地包含这些库吗?

最佳答案

boost::asio 是一个仅包含头文件的库,即您只需在包含目录路径中指定 boost::asio 源的路径,但它确实依赖于其他一些具有编译二进制文件(目标文件)的库。您必须在 Linker - Input - Library Dependencies 下的 Visual Studio 项目中列出这些附加库.例如。在 Boost.System 的情况下指定 boost_system并且链接器将添加 lib前缀和 .a.so扩展名。

这是您必须在 Linux 上执行的额外操作,在 Windows Boost 上会通过 Visual Studio 指令自动添加库引用。

我很好奇您是如何安装 Boost 的;在我看来,您在 Linux 远程上的包含路径是 /home/pi/boostPrefix/include .如果您遵循标准的 Boost 安装程序(boostrap.shb2),Boost header 将在 /.../boost_1_66_0/boost/asio 中,您在 Visual Studio 项目中指定的包含路径 C/C++ > Additional Include Directories将是 /.../boost_1_66_0在您的 C++ 代码中,您将编写 #include <boost/asio>

顺便说一句,您不需要指定 /usr/include在库路径中,GCC 默认查找那里。

关于c++ - 如何将 boost 库添加到 Visual Studio Linux 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49898806/

相关文章:

c - 为什么 ENOENT 表示 "No such file or directory"?

javascript - Upstart 说我的脚本正在运行,但 API 在我重新启动进程之前不会返回数据

c++ - 使用 Visual Studio 2012 分析 c++ win32 控制台应用程序

c++ - STL 设置自定义排序

c++ - 当第一个键改变时获取连续对映射的大小

c++ - UnicodeString 到 char* (UTF-8)

对命令提示符、Visual Studio exe 和文本文件感到困惑?

python - python 的 GIL 是否会阻止在功能独立的 c++ 库中并行执行?

linux - bash:bin/hadoop:没有这样的文件或目录(ubuntu 16.04 上的 hadoop 2.7.3)

visual-studio - 在 Visual Studio Community 2015 中使用 Emacs 绑定(bind)