【问题标题】:Undefined symbol rom external library with Swig/Python带有 Swig/Python 的未定义符号 rom 外部库
【发布时间】: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,问题是缺少的函数根本不在我包装的代码中。底层套接字库必须在某处需要它。

标签: python redhat swig


【解决方案1】:

啊,没关系。事实证明,它在头文件中声明,但从未实现。所以 swig(正确地)为它编写了一个包装器,但永远无法链接到底层实现(它不存在)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多