Heim >Backend-Entwicklung >C++ >C/C++ mit SWIG in Python einbinden
Es gibt viele Möglichkeiten, vorhandene C- oder C++-Funktionalität in Python zu kapseln. In diesem Abschnitt erfahren Sie, wie Sie mit SWIG die C/C++-Funktionalität umschließen. Hier sind weitere Optionen zum Einbinden der C/C++-Funktionalität in Python.
SWIG (Simple Wrapper Interface Generator) kann viele andere Sprachen verwenden, darunter Perl, Python, PHP, Ruby, Tcl, C#, Common Lisp (CLISP, Allegro, CL , UFFI, CFFI), Java, Modula-3 und OCAML unterstützen auch mehrere interpretierte und kompilierte Scheme-Implementierungen (wie Guile, MzScheme, Chicken
Aber wir werden hier nur die Implementierung mit Python diskutieren
SWIG). eine Makrosprache, die C-Code versteht und dann Wrapper-Code für die Sprache Ihrer Wahl ausspuckt. //www.swig.org/download.html
Darüber hinaus benötigen Sie möglicherweise auch „Microsoft Visual Studio 14.0“ oder höher, um das Swig-Programm unter Windows auszuführen. Für Anweisungen zur Verwendung von Swig haben wir beispielsweise einige c Funktionen und wir möchten sie zu anderen Sprachen wie Tcl, Perl, Python (ich interagiere mit Python), Java und C# hinzufügen.Meine C-Datei ist example.c
#include "example.h" int fact(int n) { if (n < 0) { /* This should probably return an error, but this is simpler */ return 0; } if (n == 0) { return 1; } else { /* testing for overflow would be a good idea here */ return n * fact(n-1); } }Schnittstellendatei:Jetzt. Wenn Sie C-Dateien zu Ihrer bevorzugten Sprache hinzufügen möchten, müssen Sie eine „Schnittstellendatei“ schreiben, die die Eingabe für SWIG ist Habe die Header-Datei in die vorherige Beispieldatei eingefügt. Dies ist meine Header-Datei:example.h
/* File: example.i */ %module example %{ #define SWIG_FILE_WITH_INIT #include "example.h" %} %include "example.h"
int fact(int n);
from distutils.core import setup, Extension example_module = Extension('_example', sources=['example_wrap.c', 'example.c'], ) setup (name = 'example', version = '0.1', author = "SWIG Docs", description = """Simple swig example from docs""", ext_modules = [example_module], py_modules = ["example"], )
>swig -python example.i
“Your_File_Name” + “_wrapper” + “Your_language_extension”
>python setup.py build_ext running build_ext building '_example' extension creating build creating build\temp.win32-3.6 creating build\temp.win32-3.6\Release ….
Das obige ist der detaillierte Inhalt vonC/C++ mit SWIG in Python einbinden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!