使用C++成员的Python ctypes

Python ctypes using C++ members

本文关键字:Python ctypes 成员 C++ 使用      更新时间:2023-10-16

我正在尝试在python中使用C++。所以ım尝试在python中使用c++成员。

这是我的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计划中为您实施一个三步流程。

  1. 创建一个对void*指针的python引用,该指针实际上是一个C++对象,并通过C api公开它
  2. 对于C++类的每个成员/函数,创建一个向Python公开的C函数,该函数使用void*指针并调用(Object *)->function()
  3. 创建一个python类,该类包含对C++对象的python引用,并且具有调用相应的C api函数的方法和函数,这些函数又将其参数传递给C++方法

    翻译:使用SWIG