我已经在Visual Studio中编写了下面的代码来创建一个扩展dll。帮助需要使用类扩展dll通过ctypes
class A
{
public:
void someFunc()
{
}
};
extern "C" __declspec(dllexport) A* A_new()
{
return new A();
}
extern "C" __declspec(dllexport) void A_someFunc(A* obj)
{
obj->someFunc();
}
extern "C" __declspec(dllexport) void A_destruct(A* obj)
{
delete obj;
}
我想使用ctypes在Python中使用类A.我已经写以下代码中wrapper.py -
从ctypes的导入WINDLL
LIBA = windll.LoadLibrary( “C:\ ctypestest \ Test.dll的”)
A类: DEF INIT(个体): self.obj = libA.A_new()
def __enter__(self):
return self
def __exit__(self):
libA.A_destruct(self.obj)
def some_func(self):
libA.A_someFunc(self.obj)
在蟒2.7.1命令提示i执行以下操作 -
进口的包装为w ---->工作正常
a = w.A() ----> works fine
a.some_func() ----> Error
libA.A_someFunc(self.obj)
ValueError异常:程序可能调用的参数太多(超过4个字节)
请帮助。
在此先感谢,
可能的重复[如何使用C++类与ctypes?](http://stackoverflow.com/questions/1615813/how-to-use-c-classes-with-ctypes) – delnan
你忘了'extern“ C“'您使用ctypes的所有功能。恕我直言,'__del__'方法中删除C++对象。 – Arpegius