[Python-de] Python erweitern mit C++

Matthias Urlichs smurf at noris.de
Tue Mar 26 11:22:39 EST 2002


Hi,

Juergen Hermann:
> >Ich müsste ein Python Programm mit C++ erweitern und hab mich nach 
> >geeigneten Möglichkeiten umgeschaut.
> >Meine Wahl ist auf SWIG gefallen und meine Frage:
> 
> Wenn Du den Code selbst und von Hand schreibst, statt eine vorhandene 
> Bibliothek zu verpacken, dann ist IMHO Boost die bessere Wahl.
> 
Kommt drauf an... wenn es nur darum geht, ein oder zwei C++-Aufrufe zu
machen, sind die beiden wohl relativ gleichwertig.

Ansonsten hat SWIG den Vorteil, dass es nicht nur C++ kann und "triviale"
Interfacedateien (bzw. eine erste Näherungslösung) aus der .h selber baut.

Mit Boost dagegen musst du das Python-Interface von Hand zusammenstellen.
Das ist dafür, vor allem wenn's komplizierter wird, weniger Aufwand als mit
SWIG.

Bei SWIG das Interface in komplizierten Fällen richtig hinzukriegen, ist
nicht einfach => schwer zu debuggen. Boost verläßt sich stattdessen
darauf, dass der C++-Compiler weiss, was ein Namespace und eine Template
ist, und daraus korrekten Code erzeugt => auch schwer zu debuggen.
(Wobei Compilerfehler eher auffallen als wenn man bei SWIG irgendeinen
Referenzzähler vergisst.)

Sobald du was mit Exceptions oder überladenen Funktionen machst, läßt dich
SWIG im Regen stehen.

Boost scheint noch nicht auf Python 2.2 zu sprechen zu sein -- zumindest
die Doku hört bei 2.0 auf, und von der neuen Objektstruktur und dem
Iterator-Konzept ist auch noch nicht die Rede. SWIG dagegen hat mit
solchen Ideen von vornherein nix am Hut. ;-)

-- 
Matthias Urlichs     |     noris network AG     |     http://smurf.noris.de/



More information about the Python-de mailing list