我创建了一个小型聊天服务器,我在 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.sh
和 b2
),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/