uWebSockets编译构建失败求助:函数参数不匹配问题
uSockets编译QUIC示例时函数参数不匹配错误排查
问题背景
尝试启用uWebSockets,在编译关联的uSockets(带QUIC支持)时遇到函数参数不匹配的编译错误,当前执行的步骤:
- 按lsquic仓库说明构建了指定commit的boringssl(
8927cb8f814ad3cb7cde08f02e826f1eed02bfb0)和lsquic - 克隆uSockets仓库并切换到uWebSockets最新版本关联的commit(
3cd87094c6dc2e158221a3e25dcefde0b8093ca7) - 将boringssl和lsquic目录整体移动到uSockets目录下
- 执行
WITH_QUIC=1 make examples触发编译错误
编译错误信息
examples/http3_client.c: In function ‘on_stream_headers’: examples/http3_client.c:87:5: error: too few arguments to function ‘us_quic_socket_create_stream’ 87 | us_quic_socket_create_stream(us_quic_stream_socket(s)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from examples/http3_client.c:11: src/quic.h:47:6: note: declared here 47 | void us_quic_socket_create_stream(us_quic_socket_t *s, int ext_size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
存在多个同类函数参数数量不符的错误。
问题原因与修复方案
版本不匹配问题
你切换的uSockets commit(3cd8709)对应的QUIC相关函数签名已更新,但仓库自带的examples/http3_client.c等示例代码未同步更新,导致调用时参数缺失。正确的构建流程
无需手动移动boringssl和lsquic目录,uSockets的Makefile支持自动拉取匹配版本的依赖,正确步骤:- 克隆仓库并切换目标commit:
git clone https://github.com/uNetworking/uSockets.git cd uSockets git reset --hard 3cd87094c6dc2e158221a3e25dcefde0b8093ca7 - 执行带QUIC的构建命令,Makefile会自动处理依赖:
WITH_QUIC=1 make - 若仅需库文件而非示例,可直接跳过
make examples,先完成库编译再接入自身项目;若要保留示例,需手动修正代码参数。
- 克隆仓库并切换目标commit:
示例代码手动修正
针对us_quic_socket_create_stream这类函数,补充头文件声明中要求的第二个参数(ext_size为扩展数据大小,通常传0即可):us_quic_socket_create_stream(us_quic_stream_socket(s), 0);其他同类错误同理,按照头文件中的函数签名补充缺失参数即可。
关于文档缺失的说明
uNetworking系列项目迭代较快,文档更新滞后,导致构建流程缺乏明确指引。建议优先参考仓库的Makefile内容、最新提交记录以及Issue区讨论,获取适配当前版本的构建方式。
内容的提问来源于stack exchange,提问作者Ayush Garg
相关产品推荐
相关产品推荐

