Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

SWIG

aus Wikipedia, der freien Enzyklopädie

SWIG (SimplifiedWrapper andInterfaceGenerator) ist einProgrammierwerkzeug, das inC oderC++ geschriebene Module für andereProgrammiersprachen, insbesondereSkriptsprachen, verfügbar macht.

SWIG ist einOpen-Source-Projekt und betriebssystemunabhängig (plattformübergreifend) einsetzbar.

Als Ausgangssprachen werdenC undC++, als Zielsprachen die SkriptsprachenTcl,Perl,Python,Ruby,PHP,Lua und des Weiteren auchJava,C#,Scheme,Ocaml,R undGo unterstützt.

Funktionsweise

[Bearbeiten |Quelltext bearbeiten]

Die Vielzahl moderner Programmiersprachen ist nur deshalb sinnvoll nutzbar, weil alle diese Sprachen auf einen breiten Bestand bereits existierender, inProgrammbibliotheken gebündelter Software zugreifen können.Betriebssystemnahe Bibliotheken sind überwiegend in C geschrieben. Eine Möglichkeit, C-Bibliotheken einzubinden, gehört deshalb zum Grundumfang jeder universell einsetzbaren Skriptsprache; eine Sprache muss einen solchen Mechanismus besitzen, um als Zielsprache in SWIG aufgenommen werden zu können.

Das Einbinden erfolgt in der Regel so, dass derQuellcode der Ausgangsbibliothek unverändert bleibt, und zusätzliche C-Funktionen, sogenannteWrapper, erstellt werden. Diese Wrapper dienen als Schnittstelle zwischen der Bibliothek und der Zielsprache und können aus der Zielsprache aufgerufen werden, Parameter aus der Zielsprache übernehmen und Ergebnisse an diese zurückgeben. Da die Wrapper-Funktionen nur eine Schnittstellenanpassung vornehmen, rufen diese ihrerseits die entsprechende Funktion der Ausgangsbibliothek auf. Um eine einfache Nutzung in der Zielsprache zu erreichen, ist es meist auch nötig, in dieser Sprache die Aufrufe über Konstantendefinitionen und/oder Wrapper zu kapseln.

Diesen Prozess automatisiert SWIG weitgehend. Man muss lediglich dieHeader-Datei der Ausgangsbibliothek um einige spezifische Instruktionen erweitern oder ihn in einen SWIG-spezifischen Super-Header einbinden. Dann erzeugt SWIG C-Quelltext, der die Wrapper für sämtliche Funktionen der Ausgangsbibliothek enthält. Daneben wird auch der benötigte Wrapper-Code für die Zielsprache erzeugt. Bei Java z. B. die Aufrufe über dasJNI.

Für die Erzeugung der Wrapper ist kein Zugriff auf den Quellcode der Ausgangsbibliothek erforderlich. Die Wrapper werden mit einem plattformspezifischenCompiler übersetzt und entweder mit in die Ausgangsbibliothekgelinkt oder in eine eigene Bibliothek geschrieben.

Da Swig lediglich einCodegenerator ist und der Code durch den Compiler/Linker in die Bibliothek hineingeschrieben wird, ist bei der Nutzung aus der Zielsprache keine weitereLaufzeitumgebung notwendig.

Grenzen

[Bearbeiten |Quelltext bearbeiten]

Die Grenzen von SWIG werden im Wesentlichen durch die Zielsprache bestimmt. Es handelt sich dabei um alle Sprachelemente von C++ oder C, die dort nicht sinnvoll abgebildet werden können. Ein Beispiel ist dieMehrfachvererbung von C++, die es in anderen Sprachen kaum gibt. In diesen Fällen kann eine Anpassung des Quellcodes der Ausgangsbibliothek oder ein nochmaliges Kapseln notwendig werden.

Weblinks

[Bearbeiten |Quelltext bearbeiten]
Abgerufen von „https://de.wikipedia.org/w/index.php?title=SWIG&oldid=250609507
Kategorien:

[8]ページ先頭

©2009-2026 Movatter.jp