shared libraries - How to do manual wrapping of C++ code into Python in Ubuntu -
below code calling c++ api's python:
#include <python.h> #include "dijsdk.h" #include <iostream> #include <qstring> #include "arraysize.h" static pyobject* sdktest_getversion(pyobject* self,pyobject* args); static pymethoddef defmethod[]={ {"dijsdk_getversion", sdktest_getversion, meth_varargs, "dijsdk_getversion() -> string. retrieves sdk version number."}, {null,null,0,null} }; pymodinit_func initsdktest(void) { (void) py_initmodule("sdktest", defmethod); } static pyobject* sdktest_getversion(pyobject* self,pyobject* args) { const char* name; if (!pyarg_parsetuple(args, "s", &name)) return null; printf("hello %s!\n", name); error_t result = e_ok; qstring m_guids[16]; dijsdk_camguid guids[arraysize(m_guids)] = {0}; unsigned int numguids = arraysize(guids); char version[256] = {0}; unsigned int maxlength = arraysize(version); result = dijsdk_getversion(version, maxlength); std::cout<<"version = "<<version<<"\n"; result = dijsdk_init(); //api call result = dijsdk_findcameras(guids, &numguids); //api call std::cout<<"\nnumguids = " <<numguids; std::cout<<"\nresult = "<<result; py_return_none; }
i compiling file using following command:
$g++ -fpic -g -c -wall -i/usr/include/python2.7 -i/usr/include/qt4/qtcore -i/usr/include/qt4/qtcore -i/usr/include/qt4/qtgui -i/usr/include/qt4/qtgui -i/usr/include/qt4 -i. -i. sdktest.cpp
i creating .so file using command:
$ g++ -shared -rdynamic -o sdktest.so sdktest.o -l/usr/lib/i386-linux-gnu/ -lpython2.7 -ldijsdk -lqtgui -lqtcore -wl,-rpath=/home/embadmin/desktop/linux/dijsdk-1.1.7-linux/bin/
and once .so file created placing file in : /usr/lib/python2.7/dist-packages , importing module "sdktest" python interpreter.
here going fine without errors.
my concern here is: during runtime c++ library dijsdk.so file load library should placed .so file loading python. have placed runtime libraries in folder .so file placed still not getting loaded.
i have tried same scenario pure c++ code , libraries getting called , whats special python here? doing wrong here?
and same code working fine in windows, there creating pyd file using visual studio.
is there settings have in linux work correctly?
Comments
Post a Comment