Bonjour tout le monde, avec boost python et python 3.2

Donc je suis en train de faire l'interface python 3.2 et c++ à l'aide de boost python, et avons rencontré beaucoup de beaucoup de questions. J'ai enfin eu à le compiler à l'aide de la 2.7 bibliothèques et ça marche, mais je n'arrive pas à le faire fonctionner avec python 3.2.

Voici le code c++

#include <iostream>

using namespace std;

void say_hello(const char* name) {
    cout << "Hello " <<  name << "!\n";
}

int main(){return 0;}

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;

BOOST_PYTHON_MODULE(hello)
{
    def("say_hello", say_hello);
}

Si je le compiler à l'aide de la 2.7 bibliothèques, il fonctionne bien, mais lorsque j'utilise le 3.2 les bibliothèques je reçois des tonnes de undefined références de libboost_python.donc

Sinon, j'ai écrit un peu de python pour le faire fonctionner:

from distutils.core import setup
from distutils.extension import Extension

setup(name="PackageName",
    ext_modules=[
        Extension("hello", ["testBoost.cpp"],
        libraries = ["boost_python"])
    ])

et cela va créer une donc à l'aide de python 3.2, ou de 2,7 construire, mais quand j'ai ouvert le python 3 interprète et de tenter d'importer le de sorte qu'il donne-moi de l'erreur undefined symbol PyClass_Type de libboost_python.donc encore une fois. Des idées? Est de stimuler python compatible avec python 3.x?

Si l'information est utile, voici ma tentative de compiler à l'aide de 3.2:

   $ g++ testBoost.cpp -I/usr/include/python3.2 -I/usr/local/include/boost/python -lboost_python -lpython3.2mu 
    /tmp/ccdmU1Yu.o: In function `PyInit_hello':
    testBoost.cpp:(.text+0xc2): undefined reference to `boost::python::detail::init_module(PyModuleDef&, void (*)())'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_Size'
    /usr/local/lib/libboost_python.so: undefined reference to `PyFile_FromString'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_Type'
    /usr/local/lib/libboost_python.so: undefined reference to `PyInt_Type'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_FromString'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_FromStringAndSize'
    /usr/local/lib/libboost_python.so: undefined reference to `Py_InitModule4_64'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_FromFormat'
    /usr/local/lib/libboost_python.so: undefined reference to `PyNumber_Divide'
    /usr/local/lib/libboost_python.so: undefined reference to `PyNumber_InPlaceDivide'
    /usr/local/lib/libboost_python.so: undefined reference to `PyInt_AsLong'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_InternFromString'
    /usr/local/lib/libboost_python.so: undefined reference to `PyClass_Type'
    /usr/local/lib/libboost_python.so: undefined reference to `PyString_AsString'
    /usr/local/lib/libboost_python.so: undefined reference to `PyInt_FromLong'
    /usr/local/lib/libboost_python.so: undefined reference to `PyFile_AsFile'
    collect2: ld returned 1 exit status

Et l'erreur de l'interpréteur python 3 est

File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/libboost_python.so.1.47.0: undefined symbol: PyClass_Type

Merci pour toute aide!

Vous pourriez envisager de regarder dans RASADE plutôt que de développer.Python, si vous en êtes capable. Il nécessite beaucoup moins de code réutilisable et j'ai eu à travailler avec Python3 assez facilement avant.
Je ne suis pas sûr de ce code réutilisable, vous parlez; mon booster/python fonctionne à merveille avec seulement 5 lignes de code supplémentaire.

OriginalL'auteur Dwight | 2011-08-25