Python integrieren



  • Hallo ich wollte letztens mal versuchen Python in ein C++ Projekt einzubinden.
    Ich wollte dazu noch kein boost verwenden.

    Ich bekomme aber stets folgende Fehlermeldung zu:

    #include<Python.h>

    no such file or directory

    Muss ich diese datei noch zusätzlich installieren (und wenn ja in welchem debian-paket ist sie?)
    oder ist es prinzipiell nicht möglich python ohne boost zu integrieren?

    ich wollte folgendes im netz gefundenes beispiel testen:

    #include <Python.h>
    
    int main(int argc, char *argv[])
    {
        PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
    
        if (argc < 3) 
        {
            printf("Usage: exe_name python_source function_name\n");
            return 1;
        }
    
        // Initialize the Python Interpreter
    
        Py_Initialize();
    
        // Build the name object
    
        pName = PyString_FromString(argv[1]);
    
        // Load the module object
    
        pModule = PyImport_Import(pName);
    
        // pDict is a borrowed reference 
    
        pDict = PyModule_GetDict(pModule);
    
        // pFunc is also a borrowed reference 
    
        pFunc = PyDict_GetItemString(pDict, argv[2]);
    
        if (PyCallable_Check(pFunc)) 
        {
            PyObject_CallObject(pFunc, NULL);
        } else 
        {
            PyErr_Print();
        }
    
        // Clean up
    
        Py_DECREF(pModule);
        Py_DECREF(pName);
    
        // Finish the Python Interpreter
    
        Py_Finalize();
    
        return 0;
    }
    


  • Lies doch das Tutorial aus dem du den Code kopiert hast mal ganz



  • Wie soll der Compiler Python.h finden, wenn du sie ihm nicht angegeben hast?



  • naja ich dachte da des in <> klammern war dass er das schon findet, aber anscheinend hab ich eh 2 Python.h

    nun hab ich des manuell mit eingebunden und hab das nächste problem:

    #include <QtCore/QCoreApplication>
    #include "/usr/include/python3.1/Python.h"
    
    int main()
    {
        Py_Initialize();
    
        return 0;
    }
    

    führt zu:

    /home/anubis/py/main.cpp:5: undefined reference to `Py_Initialize'
    ld returned 1 exit status
    

    was mach ich denn da falsch?



  • was muss ich denn noch einbinden libpython oder so?
    weiß leider nicht genau was ich mitlinken muss



  • shisha schrieb:

    was muss ich denn noch einbinden libpython oder so?

    Oder so... In deinem Fall wäre das libpython3.1.

    Am besten benutzt du pkg-config um sowas herauszubekommen, und zwar auch in deinen Makefiles o.ä.:

    pkg-config python3 --cflags
    pkg-config python3 --libs
    

Anmelden zum Antworten