Nutzung von Python für die C/C-Integration
Python bietet vielseitige Funktionen für die Anbindung externer Bibliotheken. Ein häufiges Szenario ist das Aufrufen von C- oder C-Funktionen aus Python heraus. Um dies zu erreichen, ist die Bereitstellung des ctypes-Moduls ein effektiver Ansatz. Im Gegensatz zu bestimmten Tools von Drittanbietern ist ctypes in die Python-Standardbibliothek eingebettet, was eine erhöhte Stabilität und umfassende Verfügbarkeit gewährleistet.
Durch die Verwendung von ctypes können Sie die Abhängigkeit von Python zur Kompilierungszeit umgehen. Folglich kann jede mit ctypes ausgestattete Python-Instanz Ihre Bindung nutzen, unabhängig von der bei der Kompilierung verwendeten Version.
Um die Verwendung von ctypes zu veranschaulichen, betrachten wir eine grundlegende C-Klasse, Foo, die in einer Datei namens foo definiert ist. cpp:
#include <iostream> class Foo { public: void bar() { std::cout << "Hello" << std::endl; } };
Um die Interaktion mit ctypes zu erleichtern, müssen wir die C-Funktionen als extern deklarieren „C“:
extern "C" { Foo* Foo_new() { return new Foo(); } void Foo_bar(Foo* foo) { foo->bar(); } }
Als nächstes kompilieren wir 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
Schließlich schreiben wir einen Python-Wrapper, um die Lücke zu schließen:
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 Setup können Sie die C-Funktionen jetzt nahtlos aus Python aufrufen:
f = Foo() f.bar() # Output: "Hello" displayed on screen
Das obige ist der detaillierte Inhalt vonWie kann das ctypes-Modul von Python nahtlos in C/C-Bibliotheken integriert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!