Heim > Backend-Entwicklung > Python-Tutorial > Wie können Ctypes Python und C/C unter Windows effizient verbinden?

Wie können Ctypes Python und C/C unter Windows effizient verbinden?

Linda Hamilton
Freigeben: 2024-12-31 12:33:20
Original
644 Leute haben es durchsucht

How Can Ctypes Efficiently Bridge Python and C/C   on Windows?

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;
        }
};
Nach dem Login kopieren

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(); }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

Mit diesem Wrapper können Sie mit dem C interagieren Klasse:

f = Foo()
f.bar() # Outputs "Hello" to the screen
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage