如何在cython中使用VC++2013编译的dll?

2024-04-26 18:16:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发C++中的3D和环境音频库,我希望用Python和其他各种语言来使用。我希望它能与iPhone上的Kivy一起工作,所以我想用Cython而不是ctypes。为此,我已经构建并公开了一个只使用基本类型(即不使用结构)的C-only api。理想情况下,我希望只有一个Python绑定的实现,并且相信在Mac/Linux上这不会是一个问题(我可能错了,但这与这个问题无关)。你知道吗

问题在于它使用C++ 11,因此需要用VC++ 2013编译。python2仍然是典型的用VC++2008编译的,我相信python3只是VC++2010。你知道吗

我熟悉动态运行时混合的规则:不要将内存从另一端释放出来,永远不要来回发送句柄,等等。我正在遵循这些规则。这意味着我准备好了ctypes和cffi。所有函数都适当地是extern "c"等。你知道吗

我能安全地使用Cython吗?如果可以,怎么用?关于使用VC++2013和VC++2008生成的导出库是否安全,我的阅读给了我一个非常复杂的答案,Cython似乎没有用于动态链接的内置功能(无论如何,这在iOS上是行不通的)。除了与导入库链接之外,我能想到的唯一一件事就是绑定windows DLL操作函数并使用Cython中的那些函数,但这很快就挫败了一个实现目标。你知道吗

我已经尝试过自己研究这个,但似乎没有什么好的信息;仅仅尝试它将在数周内没有结果,毕竟链接并不能保证功能。这是一种看起来很容易就行得通的东西,而实际上却不需要这样做;为此,我们非常感谢提供进一步阅读的资料和链接。你知道吗


Tags: 函数功能语言类型only环境链接规则