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