interfacing c/c mit Python
pythons Benutzerfreundlichkeit und Erweiterbarkeit machen es zu einer attraktiven Sprache für Programmierer aller Ebenen. Es gibt jedoch Zeiten, in denen die Integration in vorhandene C/C -Bibliotheken wünschenswert ist. In diesem Artikel wird die effizienteste Methode zum Erstellen von Python -Bindungen für diese Bibliotheken untersucht.
Das CTYPES -Modul, ein Teil der Standardbibliothek von Python, bietet eine stabile und weit verbreitete Lösung für diese Aufgabe. Im Gegensatz zu anderen Bindungsmethoden stützt sich CTYPES nicht auf die Python -Version, gegen die es kompiliert wurde, und stellt die Kompatibilität mit verschiedenen Python -Installationen sicher. , um dies mit Python zu interpretieren, müssen wir die Funktionen als extern deklarieren, damit ctypes sie erkennen: Als nächstes kompilieren wir diesen Code in eine gemeinsame Bibliothek mit: Schließlich erstellen wir eine Python -Wrapper: Mit dieser Wrapper können wir mit unserer C -Bibliothek in Python interagieren: #include
extern "C" {
Foo* Foo_new(){ return new Foo(); }
void Foo_bar(Foo* foo){ foo->bar(); }
}
g -c -fPIC foo.cpp -o foo.o
g -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
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)
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3