【发布时间】:2019-09-17 00:57:01
【问题描述】:
我查看了this question,但它似乎对我的情况没有帮助。
我有一个 C++ 库,我正在包装使用 SWIG 的部分内容(不幸的是 swig 2.0)。这个库与远程服务器执行一些套接字通信,我需要从 Python 中使用它。我终于能够编译和链接一个 .so 文件,但是在我的测试过程中,当导入生成的模块时,我得到以下信息:
...
_mod = imp.load_module('_YBB', fp, pathname, description)
ImportError: ./_YBB.so: undefined symbol: _Z11IPV4Gatewayhhhh
这个未定义的符号等同于:
IPV4Gateway(unsigned char, unsigned char, unsigned char, unsigned char)
这令人沮丧,因为我在包装库中的任何地方都没有调用此函数。所以它必须在我正在调用的底层套接字库中。
有谁知道我必须做些什么来清除这个未定义的符号?
【问题讨论】:
-
在建库时检查是否编译了与缺失函数相关的*.c文件。要验证包含给定符号的 .so,您可以使用stackoverflow.com/questions/34732/… 中描述的技术
-
@amald,问题是缺少的函数根本不在我包装的代码中。底层套接字库必须在某处需要它。