gpt4 book ai didi

c++ - 你如何让 python 识别读取预编译的共享文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:19 24 4
gpt4 key购买 nike

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

当我用我自己的主函数链接它时,我可以通过直接调用初始化函数 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")

最佳答案

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

关于c++ - 你如何让 python 识别读取预编译的共享文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com