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

Linux下加载共享库遇std::from_chars未定义符号问题的解决方法

解决Linux共享库加载时std::from_chars未定义符号问题

问题概况

在Ubuntu 20.04环境下使用G++-10构建的共享库,运行加载阶段出现以下错误:

undefined symbol: _ZSt10from_charsPKcS0_ReSt12chars_format

通过nm --unmangle命令解析后,确认是以下三个std::from_chars浮点重载符号未定义:

U std::from_chars(char const*, char const*, double&, std::chars_format)
U std::from_chars(char const*, char const*, long double&, std::chars_format)
U std::from_chars(char const*, char const*, float&, std::chars_format)

该问题属于标准库已知问题,与引入的libpqxx库依赖相关。

针对你疑问的解答

  • 能否自行定义重载该函数?
    不建议这么做。std::from_chars的浮点版本有严格的标准行为规范,自行实现不仅可能导致逻辑不一致,还会破坏标准库的ABI兼容性,后续升级工具链时极易引发更多兼容性问题。

  • 该函数是否会很快被实现?
    不会。G对std::from_chars浮点版本的完整支持是在G11中完成的(对应标准提案P2291R3),G++10及更早版本的维护分支不会再添加该实现。

  • 是否只能更换libpqxx版本?
    不是唯一方案,以下是可行解决路径:

有效解决方法

  1. 升级编译器至G++11及以上
    这是最直接的解决方案,G11已完整实现std::from_chars的浮点重载。升级后重新编译共享库及依赖的libpqxx,即可解决符号未定义问题(亲测升级到G11后问题已解决)。

  2. 更换兼容G++10的libpqxx版本
    若无法升级编译器,可选择不依赖std::from_chars浮点版本的libpqxx旧版本,这类版本在编译时不会引入未实现的标准库符号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:36:15