Python的.DLL / .SO库包装器

时间:2015-03-17 10:09:54

标签: python

我听说过SWIG,但所提供的示例并不符合我的需求,因为它们都涉及gcc

我有一个动态库foo.dll以及相应的标头foo.h

在我的图书馆里,我可能有:

// foo.h
typedef int HANDLER;

int init(HANDLER* dh);
int cry(HANDLER dh, int intensity);
int smile(HANDLER dh, int intensity);
int die(HANDLER dh);

我想在python包中包装这个库,可以像这样使用:

#!/usr/bin/env python
import foo

him = Foo()
him.cry(20)
him.smile(10)
him.die()

在我的包装后面,我期待的是:

class Foo:
    def __init__(self):
        self.foo = cdll.LoadLibrary("foo.dll")
        self.handler = p_int()
        self.foo.init(pointer(self.handler))

    def cry(self):
        return self.foo.cry(self.handler)

自动执行此操作的正确工具是什么?

1 个答案:

答案 0 :(得分:0)

我说Cython,并作为示例(?)首先搜索" cython dll"得到: http://people.seas.harvard.edu/~krussell/html-tutorial/wrap_dll.html