Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie C++-Code in Python

So verwenden Sie C++-Code in Python

(*-*)浩
(*-*)浩Original
2019-07-04 09:20:175034Durchsuche

Jeder weiß, dass die Vorteile von Python in einer hohen Entwicklungseffizienz und Benutzerfreundlichkeit liegen, während C++ eine hohe Betriebseffizienz aufweist. Beide können sich gegenseitig ergänzen, sei es die Einbettung von C++-Code in ein Python-Projekt oder die Verwendung von Python zur Implementierung von Peripheriegeräten In einer C++-Projektfunktion muss Python möglicherweise C++-Module aufrufen.

So verwenden Sie C++-Code in Python

Im Folgenden finden Sie eine Liste von Methoden zum Exportieren von zentralisiertem C++-Code in eine Python-Schnittstelle. Lasst uns gemeinsam lernen.

Originalexport (empfohlenes Lernen: Python-Video-Tutorial)

Der Python-Interpreter ist in C implementiert, also As Solange unsere C++-Datenstruktur von Python verstanden werden kann, kann sie theoretisch direkt aufgerufen werden. Wir implementieren test1.cpp wie folgt

#include <Python.h>
int Add(int x, int y)
{
return x + y;
}
int Del(int x, int y)
{
return x - y;
}
PyObject* WrappAdd(PyObject* self, PyObject* args)
{
int x, y;
if (!PyArg_ParseTuple(args, "ii", &x, &y))
{
return NULL;
}
return Py_BuildValue("i", Add(x, y));
}
PyObject* WrappDel(PyObject* self, PyObject* args)
{
int x, y;
if (!PyArg_ParseTuple(args, "ii", &x, &y))
{
return NULL;
}
return Py_BuildValue("i", Del(x, y));
}
static PyMethodDef test_methods[] = {
{"Add", WrappAdd, METH_VARARGS, "something"},
{"Del", WrappDel, METH_VARARGS, "something"},
{NULL, NULL}
};
extern "C"
void inittest1()
{
Py_InitModule("test1", test_methods);   
}

Der Kompilierungsbefehl lautet wie folgt

g++ -fPIC -shared test1.cpp -I/usr/include/python2.7 -o test1.so

-fPIC: Positionsunabhängigen Zielcode generieren, der für dynamische Verbindungen geeignet ist ;
-L Pfad: bedeutet die Suche nach Bibliotheksdateien im Pfadverzeichnis, z. B. -L bedeutet die Suche im aktuellen Verzeichnis
-I Pfad: bedeutet die Suche nach Header-Dateien im Pfadverzeichnis; -o Datei: Gibt die Ausgabedatei als Datei an;
-shared: Generieren Sie eine gemeinsam genutzte Bibliotheksdatei

Führen Sie den Python-Interpreter aus und testen Sie ihn wie folgt

>>> import test1
>>> test1.Add(1,2)
3

Hier sind einige Punkte zu beachten

Wenn der Name der generierten dynamischen Bibliothek test1 ist, muss die Quelldatei über die Funktion inittest1 verfügen und der erste Parameter von Py_InitModule muss „test1“ sein ", andernfalls schlägt das Python-Importmodul fehl

Wenn es sich um eine CPP-Quelldatei handelt, muss die Funktion inittest1 mit extern „C“ geändert werden. Wenn es sich um eine C-Quelldatei handelt, ist sie nicht erforderlich. Der Grund dafür ist, dass der Python-Interpreter beim Importieren von Bibliotheken nach Funktionen wie initxxx sucht und C++ beim Codieren von Funktionssymbolen die Funktionslänge und den Parametertyp unterschiedlich berücksichtigt Überprüfen Sie die Funktionssymbole. Das C++-Filtertool kann den Funktionsprototyp mithilfe der Symbole dekodieren.

Weitere technische Artikel zu Python finden Sie in der Spalte

Python-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie C++-Code in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet Pythons Crawler?Nächster Artikel:Was bedeutet Pythons Crawler?