Cython:与dll /动态链接

时间:2011-07-01 09:46:32

标签: python cython

我正在使用一个API,它作为dll / so文件分发,我需要动态链接到我的python程序。为了实现这一点,我想使用Cython。

过去,我能够静态地连接到dll。这很有效,除了API有四种不同的版本,理论上无限多,用户应该能够用他们想要的任何名称编译它们(有点像插件系统)。因此,我不能只创建一个so / pxd文件,它只与一个库静态链接,甚至与选择它们的链接。

我需要的是能够将so / dll名称传递给Cython代码并让它“导入”它。我知道这可以通过ctypes.cdll.LoadLibrary用ctypes完成,但在Cython中这种事情有可能吗?我是否必须使用ctypes来执行此操作?

1 个答案:

答案 0 :(得分:2)

我假设你在谈论在这里编写C模块。如果是的话,你可以。我不知道Windows上的等价物是什么,但在Linux中你可以使用dlopen和朋友。它有一个手册页,还有几个记录它的网站。试试这个链接“http://linux.die.net/man/3/dlopen”它为你提供了一个靠近页面底部的好例子。这和ctypes做的事情是一样的,事实上我认为这甚至可能是ctypes使用的。