Erreur d'importation sur le programme boost python hello
inclure
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>("World")
.def("greet", &World::greet)
.def("set", &World::set)
;
}
Compiler et générer ok
~/boost$ g++ -fPIC -I/usr/include/python2.6 -c hello.cpp
~/boost$ g++ -shared hello.o -o hello.so
Mais lors de l'importation à partir de python côté, a reçu l'erreur.
>>> import hello.so
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./hello.so: undefined symbol: _ZNK5boost6python7objects21py_function_impl_base9max_arityEv
>>>
Quelqu'un peut-il m'aider? Merci à l'avance.
source d'informationauteur user216056 | 2009-11-22
Vous devez vous connecter pour publier un commentaire.
Résolu via "Aucun fichier ou répertoire" erreur " Boost Python
a fait le tour pour moi. J'espère que c'est aussi clair que possible, comme je l'ai été aux prises avec cette pendant environ une demi-heure maintenant 😉
Oh, je viens de voir ce post:
et le problème est résolu
même que dans les autres post ici
Mais je tiens à souligner l'importance de la position de "-lpython2.6 -lboost_python". Si vous les mettez en face de fichiers d'entrée (bonjour.o), ils seront en quelque sorte ignoré (pas lié à la finale de bonjour.donc). C'est au moins vrai pour g++ (Ubuntu/Linaro 4.6.3-1ubuntu5).
Simple, http://ubuntuforums.org/showthread.php?t=496287 suggéré:
J'ai eu le même problème et il s'est avéré que j'ai été absent un constructeur de ma classe.