Error de importación en el progtwig de impulso python hello

incluir

using namespace boost::python; struct World{ void set(std::string msg) { this->msg = msg; } std::string greet() { return msg; } std::string msg; }; BOOST_PYTHON_MODULE(hello) { class_("World") .def("greet", &World::greet) .def("set", &World::set) ; } 

Comstackr y construir bien

 ~/boost$ g++ -fPIC -I/usr/include/python2.6 -c hello.cpp ~/boost$ g++ -shared hello.o -o hello.so 

Pero cuando importamos del lado de python, obtuvimos error

 >>> import hello.so Traceback (most recent call last): File "", line 1, in  ImportError: ./hello.so: undefined symbol: _ZNK5boost6python7objects21py_function_impl_base9max_arityEv >>> 

Alguien puede ayudarme? Gracias por adelantado.

Resuelto esto a través del error “No existe tal archivo o directorio” con Boost Python

 g++ -c -fPIC hello.cpp -o hello.o g++ -shared -Wl,-soname,hello.so -o hello.so hello.o -lpython2.6 -lboost_python 

hizo el truco para mí Espero que esto sea lo más claro posible, ya que estuve luchando con esto durante aproximadamente media hora ahora;)

Oh, acabo de ver este post:

ayuda necesaria con el impulso de python

y problema resuelto

igual que otro post aqui

 g++ -c -fPIC hello.cpp -o hello.o g++ -shared -Wl,-soname,hello.so -o hello.so hello.o -lpython2.6 -lboost_python 

Pero quiero enfatizar la importancia de la posición de “-lpython2.6 -lboost_python”. Si los coloca delante de los archivos de entrada (hello.o), se ignorarán de alguna manera (no se vincularán al hola.so final). Esto es al menos cierto para g ++ (Ubuntu / Linaro 4.6.3-1ubuntu5).

Para ser simple, http://ubuntuforums.org/showthread.php?t=496287 sugirió:

  g++ <.cpp or .o file(s)> [LDFLAGS] [LIBS] -o [appname] 

Tuve el mismo problema y resultó que faltaba un constructor en mi clase.