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

SWIG生成Perl接口运行时报未定义符号_Z7ml_initi

SWIG生成Perl接口运行时报未定义符号_Z7ml_initi

我现在碰到个棘手的问题:想在Perl里调用几个简单的C函数,包括初始化函数ml_init(int)、发送二进制数组的函数、处理数据的函数,还有关闭函数。我是在树莓派(Linux系统)上操作的,用SWIG生成了中间接口文件。

SWIG生成的包装器文件是.cpp格式,编译出来的.o文件也已经加到链接命令里了。

编译和链接过程看起来都完全正常,但运行测试Perl程序的时候,却突然报错:undefined symbol: _Z7ml_initi。我用nm命令查看生成的.so文件,发现ml_init是带十六进制值和标记T的(按照nm手册,这个标记表示符号已定义),但报错里那个类型安全的 mangled 名称(也就是_Z7ml_initi)前面却标着U——这个标记意味着符号“未定义”。

这就彻底懵了啊?

既然符号已经在文件里了,那不就应该是已定义的吗?怎么会明明存在,链接器却认为它未定义呢?

备注:内容来源于stack exchange,提问作者Mike Lempriere

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 08:43:06