You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中使用websocketpp?编译示例报头文件不存在如何解决

编译报错根因

当前出现的fatal error: websocketpp/config/asio_no_tls.hpp: No such file or directory错误,核心原因是编译器的头文件搜索路径,没有覆盖你本地克隆的websocketpp源码目录,导致预处理器无法定位到头文件位置,和示例代码本身的逻辑错误无关。

完整使用流程(适配你当前的无TLS服务端示例)

前置依赖安装

websocketpp以纯头文件实现为主,不需要编译安装库本体,运行时依赖两个基础库:

  • 基础开发依赖:Boost、原生Asio(你使用的是无TLS配置,不需要额外安装OpenSSL)
    • Debian/Ubuntu 系统执行安装命令:sudo apt install libboost-all-dev libasio-dev
    • CentOS/RHEL 系统执行安装命令:sudo dnf install boost-devel asio-devel
    • Windows 环境可通过vcpkg安装对应依赖包完成配置。

解决includePath配置问题

假设你将websocketpp仓库克隆到本地的路径为/本地路径/websocketpp,且该路径下可直接看到websocketpp文件夹(文件夹内存放config、server.hpp等核心头文件):

  • 命令行编译场景:在g++编译命令中通过-I参数指定头文件搜索路径,参考编译命令如下:
    g++ 你的服务端代码文件.cpp -o websocket_print_server -I /本地路径/websocketpp -lboost_system -pthread
    
  • IDE开发场景(如VS Code):在配置文件c_cpp_properties.json的includePath数组中,添加/本地路径/websocketpp/**路径,即可消除IDE的语法报红,和实际编译逻辑保持一致。
  • 特别注意:不要将-I参数直接指向websocketpp子文件夹内部,否则编译器会重复拼接路径,依然无法找到对应头文件。

示例代码运行注意事项

你编写的示例服务端代码逻辑不存在问题,启动后需要注意几个运行细节:

  • 如果listen(9002)初始化失败,检查9002端口是否被其他进程占用,更换未占用的端口即可。
  • 服务端启动后,需要在防火墙放行对应端口的入站规则,否则外部客户端无法建立连接。
  • 功能测试可使用浏览器自带的WebSocket调试工具,连接地址为ws://127.0.0.1:9002,发送文本消息后,服务端控制台会直接打印收到的消息内容。

常见踩坑说明

  • 后续如果需要实现wss加密的WebSocket连接,仅需要将代码中的头文件替换为websocketpp/config/asio_ssl.hpp,额外安装OpenSSL依赖,编译时增加-lssl -lcrypto链接参数即可,业务逻辑不需要改动。
  • 生产环境部署时,建议补充连接打开、连接关闭的回调处理,避免异常连接导致的资源泄漏。

内容的提问来源于stack exchange,提问作者Raman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 14:24:00