我在 Visual Studio 中编写了以下代码来创建扩展 DLL。
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;
}
Run Code Online (Sandbox Code Playgroud)
我想在python中使用ctypes来使用A类。我在wrapper.py中编写了以下代码——
从 ctypes 导入 Windll
libA = Windll.LoadLibrary("c:\ctypestest\test.dll")
A类: def init (self): 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)
Run Code Online (Sandbox Code Playgroud)
在 python 2.7.1 命令提示符下,我执行以下操作 -
import 包装器 as w ----> 工作正常
a …Run Code Online (Sandbox Code Playgroud) 我需要使用Python C API将C++类公开到嵌入式python中.
换句话说,就像这样: 将C++类实例暴露给python嵌入式解释器, 但根本不使用Boost.
我想把它放在这个应用程序是相当老的,编译器,环境等......无法处理Boost.