.DLL/.SO用于Python的库包装器

2024-04-26 05:39:43 发布

您现在位置: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)

什么是自动执行此操作的合适工具?你知道吗


Tags: selffooinitdefinthandlerdlldh