From: Bruce W. <bru...@gm...> - 2007-05-10 15:57:21
|
Hi, all I have some callback functions in my .cpp files and I want to wrap them into python scripts with swig. So I have tried this example first: swigwin-1.3.31/Examples/python/callback. This example compiles and runs well. But this callback function takes no arguments, so I changed it a little: // example.h class Callback { public: virtual ~Callback() { std::cout << "Callback::~Callback()" << std:: endl; } // XXX this is the original statement // virtual void run() { std::cout << "Callback::run()" << std::endl; } virtual void run(int* pn) { std::cout << "Callback::run()" << (*pn) << std::endl; } }; class Caller { private: Callback *_callback; public: Caller(): _callback(0) {} ~Caller() { delCallback(); } void delCallback() { delete _callback; _callback = 0; } void setCallback(Callback *cb) { delCallback(); _callback = cb; } // XXX void call() { if (_callback) _callback->run(); } void call() { if (_callback) { int i = 90; // XXX _callback->run(i); _callback->run(&i); } } }; As you see, I just add a int* argument to this callback. It compiles but it cause python.exe to crash while running. Could anybody tell me how to solve this? Any help would be appreciated! Bruce |