我找到了答案。如果我将函数指针声明为SWIG“成员函数”,则它似乎可以按预期工作:
%module test%{typedef struct { int (*my_func)(int);} test_struct;int add1(int n) { return n+1; }test_struct *init_test(){ test_struct *t = (test_struct*) malloc(sizeof(test_struct)); t->my_func = add1; return t;}%}typedef struct { int my_func(int);} test_struct;extern test_struct *init_test();会议:
$ pythonPython 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) [GCC 4.3.3] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import test>>> t = test.init_test()>>> t.my_func(1)2
我希望不需要编写任何特定于SWIG的自定义代码(我希望仅在不进行任何修改的情况下仅“%include”我的标头)进行编写,但是我想这可以做到。



