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

无法通过Luarocks安装lua-requests依赖的xml模块:C++17编译报错

解决Luarocks安装xml模块时C++17不兼容的动态异常规范错误

问题原因

xml 1.1.3-1依赖的dub绑定库使用了C++17已废弃的动态异常声明语法(throw(...)),当前gcc默认以C++17标准编译,因此触发编译报错。

解决方案

方案1:临时指定C++14编译标准(推荐)

安装时通过环境变量强制使用C++14标准编译,该标准仍支持动态异常声明:

CC=gcc CXXFLAGS="-std=c++14" luarocks install xml 1.1.3-1

如果是直接安装lua-requests,可连带处理依赖:

CC=gcc CXXFLAGS="-std=c++14" luarocks install lua-requests

方案2:手动修改源码移除废弃语法

若方案1无效,可手动修改xml模块源码:

  • 下载xml模块源码包并解压:
    luarocks download xml 1.1.3-1
    tar -xf xml-1.1.3-1.src.rock
    cd xml-1.1.3-1
    
  • 打开src/bind/dub/dub.h文件,找到所有带有throw(...)的函数声明,删除throw(...)部分。例如:
    原代码:
    lua_Number checknumber(lua_State *L, int narg) throw(dub::TypeException);
    
    修改后:
    lua_Number checknumber(lua_State *L, int narg);
    
  • 保存文件后,执行以下命令安装修改后的模块:
    luarocks make
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:51