我正在用C ++开发一个用于3D和环境音频的库,我希望从Python和许多其他语言中使用它。我希望它可以在iPhone上使用Kivy,所以我想使用Cython而不是ctypes。为此,我已经构建并暴露了仅使用原始类型的C-only api,即没有结构。理想情况下,我希望只有一个Python绑定的实现,并且相信在Mac / Linux上这不会是一个问题(我可能是错的,但这对于这个问题来说是偏离主题的。)
问题在于它大量使用C ++ 11,因此需要使用VC ++ 2013进行编译.Python 2仍然通常使用VC ++ 2008编译,我相信Python 3只是VC ++ 2010。
我熟悉动态运行时混合的规则:不要将内存传递出去并从另一端释放,永远不要来回发送句柄等等。我正在关注它们。这意味着我是ctypes和cffi-ready。所有功能都适当extern "c"
等。
我可以安全地使用它与Cython,如果是这样,怎么样?我的阅读给出了一个非常复杂的答案,关于使用VC ++ 2013和VC ++ 2008生成的导出库是否安全,而Cython似乎没有动态链接的内置功能(这在iOS上不起作用)无论如何)。除了链接导入库之外,我唯一能想到的就是绑定windows DLL操作函数并在Cython中使用它们 - 但这很快就会破坏一个实现目标。
我自己已经尝试过研究这个问题,但似乎没有好的信息;简单地尝试它几周就没有结果 - 毕竟,链接并不能保证功能性。这种事情很容易在没有实际工作的情况下正常工作;为此,非常感谢来源和进一步阅读的链接。