链接库与Python 2和Python 3库

时间:2016-10-05 15:10:20

标签: python c gcc hyperlink

我想创建一个与libpython2.solibpython3.so链接的库,以便能够执行Python2和Python 3脚本。问题是两个库都包含具有相同名称的函数。我尝试通过以下方式解决问题:

  • 支持模块foo-python2.c用于Python 2支持,它与libpython2.so
  • 相关联
  • 支持模块foo-python3.c,支持Python 3,与libpython3.so
  • 相关联
  • 主文件foo-main.c,它调用Python 2和Python 3支持模块中的init函数,并与foo-python2.ofoo-python3.o链接。

当加载libfoo.so时,Python 2初始化正在按预期工作,但是当我尝试访问Python 3函数时,它无法按预期工作。 在我调用Py_IsInitialized()时,在Python 3支持库中返回true,尽管libpython3.so未加载g_module_open。所以我的假设是Py_IsInitialized指向Python 2版本。当我忽略此并调用g_module_open("/usr/lib/libpython3.so", 0)并调用某些Py_*函数时,模块会崩溃。

如何正确链接3个对象以解决我的问题?

0 个答案:

没有答案