我正在尝试在 python 中使用 C++。所以我正在尝试将 c++ 成员与 python 一起使用。
有我的 try.cpp 文件..
extern "C" int test(){
string a="Test!!";
int b = 5;}
还有dll.py ..
from ctypes import cdll
import os
fullpath = os.path.abspath('try.dll')
mydll = cdll.LoadLibrary(fullpath)
CALL = mydll.test()
基本上,我只想使用 C++ 成员,例如 ;
CALL = mydll.test()
print CALL.a # Output : Test!!
print CALL.b # Output : 5
有什么建议吗?我只想直接使用 C++ 成员,但我不确定是否可行......困惑
最佳答案
Python 的 C API 不直接支持 C++ 成员。要执行您提议的操作,需要在 SWIG 程序中为您实现一个 3 步流程。
- 创建一个指向实际上是 C++ 对象的
void*
指针的 python 引用,并通过 C api 公开它。 - 对于 C++ 类的每个成员/函数,创建一个暴露给 Python 的 C 函数,它使用 void * 指针并调用
(Object *)->function()
- 创建一个 python 类,其中包含对 C++ 对象的 python 引用,并且具有调用相应 C api 函数的方法和函数,这些函数又将它们的参数传递给 C++ 方法
翻译:使用SWIG!
关于使用 C++ 成员的 Python ctypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539351/