你如何使python识别读取预编译的共享文件?

时间:2011-06-23 16:25:21

标签: c++ python cmake distutils python-c-api

我有一个用C ++创建的包,并且已经将它编译成共享库。

当我用自己的main函数链接它时,我可以通过直接调用初始化函数初始化包,initfoo,一切正常。

如何让python将我的共享库识别为包,所以我只需输入:

import foo

从常规python解释器运行?

我对使用distutils编译文件不感兴趣,因为编译必须是常规cmake构建系统的一部分。我只需要创建加载共享库所需的任何包文件。

更新: 我现在有它的工作。问题在于cmake默认为共享库名称的lib前缀。要解决此问题,需要

SET_TARGET_PROPERTIES(foo PROPERTIES PREFIX "")

和Mac OS X

SET_TARGET_PROPERTIES(foo PROPERTIES SUFFIX ".so")

1 个答案:

答案 0 :(得分:2)

如果您有一个导出initfoo符号的共享库(注意:因为您已标记问题 - 请确保它是extern "C"符号,否则名称修改将阻止从找到它的解释器,然后它已经是一个Python模块,可以直接加载,没有进一步的工作。您只需要确保它在搜索路径上,就像任何其他模块一样。