Python swig调用共享库与另一个共享库

时间:2016-03-24 15:42:33

标签: python c++ swig

我正在使用SWIG在Linux上用C ++程序编写python包装器。

  1. C ++程序将使用名为AAA的共享库(动态链接)。从这个C ++程序代码编译的可执行文件,它运行良好。
  2. 使用SWIG的教程,我设法编写一个接口并使用与AAA共享库链接的xxx_wrap.cxx文件进行编译。这在大多数情况下运行良好,但是在python中,导入xxx,它运行良好,我可以在程序中调用函数,如xxx.say_hi()。(共享库AAA中的say_hi()函数工作正常)。
  3. 棘手的是,当我调用xxx.say_bye()时,say_bye()函数将调用共享库AAA中的函数(动态链接),这些函数将尝试加载另一个动态在预定义的位置共享库(例如/tmp/abc/yyy.so)

    Failed to load yyy.so due to yyy.so: undefied symbol: ___gxx_personality_v0

  4. 所以,我的问题是,SWIG是否支持这种二级动态共享库加载?使用CentOS.6.4,swig版本:1.3.40,提升:1.46.1

    提前致谢。

    更新

    在挖掘之后,yyyy.so是从GCC编译的,而我使用g ++编译C ++扩展。用g ++重新编译yyyy.so后,现在错误更明确了:

    symbol lookup error: /tmp/abc/yyyy.so: undefined symbo: ABC
    

    ABC是在用于编译yyyy.so的头文件中定义的符号,但是,它应该包含在共享库AAA

0 个答案:

没有答案
相关问题