我正在使用SWIG在Linux上用C ++程序编写python包装器。
AAA
的共享库(动态链接)。从这个C ++程序代码编译的可执行文件,它运行良好。AAA
共享库链接的xxx_wrap.cxx文件进行编译。这在大多数情况下运行良好,但是在python中,导入xxx,它运行良好,我可以在程序中调用函数,如xxx.say_hi()。(共享库AAA
中的say_hi()函数工作正常)。 棘手的是,当我调用xxx.say_bye()时,say_bye()函数将调用共享库AAA
中的函数(动态链接),这些函数将尝试加载另一个动态在预定义的位置共享库(例如/tmp/abc/yyy.so)
Failed to load yyy.so due to yyy.so: undefied symbol: ___gxx_personality_v0
所以,我的问题是,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