Hello,
I am trying to wrap a simple class that runs some image processing routines.
I would like them to be script-able from python.
I am not trying to pass complicated types, in fact almost all the functions
take and return no arguments. Here is my wrapper code (generated with
pyplusplus partially):
#include "boost/python.hpp"
#include "eventDetector.h"
namespace bp = boost::python;
BOOST_PYTHON_MODULE(pyplusplus){
{ //::eventDetector
typedef bp::class_< eventDetector > eventDetector_exposer_t;
eventDetector_exposer_t eventDetector_exposer =
eventDetector_exposer_t( "eventDetector", bp::init< params & >((
bp::arg("op") )) );
bp::scope eventDetector_scope( eventDetector_exposer );
bp::implicitly_convertible< params &, eventDetector >();
{ //::eventDetector::detect
typedef void ( ::eventDetector::*detect_function_type )( ) ;
eventDetector_exposer.def(
"detect"
, detect_function_type( &::eventDetector::detect ) );
}
{ //::eventDetector::init
typedef void ( ::eventDetector::*init_function_type )( ) ;
eventDetector_exposer.def(
"init"
, init_function_type( &::eventDetector::init ) );
}
{ //::eventDetector::load
typedef void ( ::eventDetector::*load_function_type )( ) ;
eventDetector_exposer.def(
"load"
, load_function_type( &::eventDetector::load ) );
}
{ //::eventDetector::save
typedef void ( ::eventDetector::*save_function_type )( ) ;
eventDetector_exposer.def(
"save"
, save_function_type( &::eventDetector::save ) );
}
{ //::eventDetector::setGridSize
typedef void ( ::eventDetector::*setGridSize_function_type )(
int,int ) ;
eventDetector_exposer.def(
"setGridSize"
, setGridSize_function_type( &::eventDetector::setGridSize )
, ( bp::arg("x"), bp::arg("y") ) );
}
{ //::eventDetector::setVideoCapture
typedef bool ( ::eventDetector::*setVideoCapture_function_type
)( ::std::string ) ;
eventDetector_exposer.def(
"setVideoCapture"
, setVideoCapture_function_type(
&::eventDetector::setVideoCapture )
, ( bp::arg("filename") ) );
}
{ //::eventDetector::setVideoCapture
typedef bool ( ::eventDetector::*setVideoCapture_function_type
)( int ) ;
eventDetector_exposer.def(
"setVideoCapture"
, setVideoCapture_function_type(
&::eventDetector::setVideoCapture )
, ( bp::arg("cam") ) );
}
{ //::eventDetector::train
typedef void ( ::eventDetector::*train_function_type )( ) ;
eventDetector_exposer.def(
"train"
, train_function_type( &::eventDetector::train ) );
}
}
bp::class_< params >( "params" )
... large list of simple params...;
}
It builds fine using bjam but when I import into python I get an error
message: libEventDetector.so: undefined symbol: _ZN13eventDetector4loadEv.
I am really not very good with boost::python and I don't really know what to
do. Help is appreciated, thank you!
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig