<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SWIG</id>
	<title>SWIG - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SWIG"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SWIG&amp;action=history"/>
	<updated>2026-05-22T20:18:42Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=SWIG&amp;diff=1084064&amp;oldid=prev</id>
		<title>imported&gt;Rosenfalter: /* growthexperiments-addlink-summary-summary:1|0|2 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SWIG&amp;diff=1084064&amp;oldid=prev"/>
		<updated>2024-11-23T12:58:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|0|2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SWIG&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;implified &amp;#039;&amp;#039;&amp;#039;W&amp;#039;&amp;#039;&amp;#039;rapper and &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;nterface &amp;#039;&amp;#039;&amp;#039;G&amp;#039;&amp;#039;&amp;#039;enerator&amp;#039;&amp;#039;) ist ein [[Programmierwerkzeug]], das in [[C (Programmiersprache)|C]] oder [[C++]] geschriebene Module für andere [[Programmiersprache]]n, insbesondere [[Skriptsprache]]n, verfügbar macht.&lt;br /&gt;
&lt;br /&gt;
SWIG ist ein [[Open Source|Open-Source]]-Projekt und betriebssystemunabhängig (plattformübergreifend) einsetzbar.&lt;br /&gt;
&lt;br /&gt;
Als Ausgangssprachen werden [[C (Programmiersprache)|C]] und [[C++]], als Zielsprachen die Skriptsprachen [[Tcl]], [[Perl (Programmiersprache)|Perl]], [[Python (Programmiersprache)|Python]], [[Ruby (Programmiersprache)|Ruby]], [[PHP]], [[Lua]] und des Weiteren auch [[Java (Programmiersprache)|Java]], [[C-Sharp|C#]], [[Scheme]], [[Ocaml]], [[R (Programmiersprache)|R]] und [[Go (Programmiersprache)|Go]] unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
Die Vielzahl moderner Programmiersprachen ist nur deshalb sinnvoll nutzbar, weil alle diese Sprachen auf einen breiten Bestand bereits existierender, in [[Programmbibliothek]]en gebündelter Software zugreifen können.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Das Einbinden erfolgt in der Regel so, dass der [[Quellcode]] der Ausgangsbibliothek unverändert bleibt, und zusätzliche C-Funktionen, sogenannte [[Wrapper (Software)|Wrapper]], 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.&lt;br /&gt;
&lt;br /&gt;
Diesen Prozess automatisiert SWIG weitgehend. Man muss lediglich die [[Header-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.&amp;amp;nbsp;B. die Aufrufe über das [[Java Native Interface|JNI]].&lt;br /&gt;
&lt;br /&gt;
Für die Erzeugung der Wrapper ist kein Zugriff auf den Quellcode der Ausgangsbibliothek erforderlich. Die Wrapper werden mit einem plattformspezifischen [[Compiler]] übersetzt und entweder mit in die Ausgangsbibliothek [[Linker (Computerprogramm)|gelinkt]] oder in eine eigene Bibliothek geschrieben.&lt;br /&gt;
&lt;br /&gt;
Da Swig lediglich ein [[Codegenerator]] ist und der Code durch den Compiler/Linker in die Bibliothek hineingeschrieben wird, ist bei der Nutzung aus der Zielsprache keine weitere [[Laufzeitumgebung]] notwendig.&lt;br /&gt;
&lt;br /&gt;
== Grenzen ==&lt;br /&gt;
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 die [[Mehrfachvererbung]] 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.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.swig.org/ SWIG-Website] (englisch)&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Swig}}&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Rosenfalter</name></author>
	</entry>
</feed>