使用C ++成员的Python ctypes

时间:2015-04-09 13:06:13

标签: python c++ ctypes

我正在尝试在python中使用C ++。所以尝试使用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 ++成员,但我不确定是否可行.. confused

1 个答案:

答案 0 :(得分:0)

Python的C API并不直接支持C ++成员。要完成您提出的建议,需要在SWIG计划中为您实施的三步流程。

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

    翻译:使用SWIG!