2010-07-21 75 views
4

这里是我的C++代码:调用C++中的Python函数与痛饮

void callMethod(void (*someMethod)()) { 
    (*someMethod)(); 
} 

我痛饮.i文件是:

%module test 
%{ 
#define SWIG_FILE_WITH_INIT 

extern void callMethod(void (*someMethod)()); 
%} 

%typemap (in) void* 
%{ 
    $1 = PyCObject_AsVoidPtr($input); 
%} 


extern void callMethod(void (*someMethod)()); 

这是我的错误:

In [1]: import test 

In [2]: b=test.callMethod 

In [3]: def func(): 
    ...:  print "hi" 
    ...:  
    ...:  

In [4]: b(func) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 

$DIR/<ipython console> in <module>() 

TypeError: in method 'callMethod', argument 1 of type 'void (*)()' 

我如何用Swig做我想要的?

提前致谢!

+0

找到解决办法? – JuanPablo 2011-01-17 13:01:15

回答