Heim >Backend-Entwicklung >Python-Tutorial >Wie können Ctypes Python und C/C unter Windows effizient verbinden?
C/C aus Python aufrufen
Bei der Arbeit mit Windows-Systemen ist die effiziente Bindung von Python an C/C-Bibliotheken von entscheidender Bedeutung. Unter den verfügbaren Optionen sticht das ctypes-Modul als überzeugende Wahl hervor.
Verwendung von Ctypes für Bindungen
Ctypes ist ein integraler Bestandteil der Standardbibliothek von Python. Diese inhärente Stabilität und breite Verfügbarkeit machen es zu einer vorteilhaften Option im Vergleich zu anderen Alternativen. Darüber hinaus sind Ctypes-Bindungen so zugeschnitten, dass sie nahtlos mit jeder Version von Python funktionieren, die Ctypes unterstützt, nicht nur mit der, die während der Kompilierung verwendet wird.
Erstellen einer Python-Bindung mit Ctypes
Betrachten Sie eine vereinfachte C-Klasse namens Foo, die in foo.cpp definiert ist:
#include <iostream> class Foo{ public: void bar(){ std::cout << "Hello" << std::endl; } };
Um die Kommunikation mit Python über zu erleichtern ctypes, seine Funktionen müssen als externes „C“ deklariert werden:
extern "C" { Foo* Foo_new(){ return new Foo(); } void Foo_bar(Foo* foo){ foo->bar(); } }
Kompilieren Sie als Nächstes diesen Code in eine gemeinsam genutzte Bibliothek:
g++ -c -fPIC foo.cpp -o foo.o g++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
Erstellen Sie abschließend einen Python-Wrapper (z. B. fooWrapper.py):
from ctypes import cdll lib = cdll.LoadLibrary('./libfoo.so') class Foo(object): def __init__(self): self.obj = lib.Foo_new() def bar(self): lib.Foo_bar(self.obj)
Mit diesem Wrapper können Sie mit dem C interagieren Klasse:
f = Foo() f.bar() # Outputs "Hello" to the screen
Vorteile von Ctypes
Ctypes vereinfacht den Prozess der Bindung von C/C-Code an Python und bietet eine stabile und allgemein anwendbare Lösung auf Windows-Systemen. Es bietet einen robusten und kompatiblen Ansatz für die Anbindung an native Bibliotheken von Python.
Das obige ist der detaillierte Inhalt vonWie können Ctypes Python und C/C unter Windows effizient verbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!