2009-06-01 13 views

Antwort

13

Ich mag SWIG nicht besonders gerne und schreibe lieber den Schnittstellencode selbst. Perl kommt mit einer Art Pseudo-Sprache namens 'XS' für die Schnittstelle zu C oder C++. Um es zu verwenden, müssen Sie leider mindestens C, Perl und dann etwas über die Interpreter-API wissen. Wenn Sie Perl und C schon gut kennen, ist es kein wie ein großer Schritt. Werfen Sie einen Blick auf die folgenden Kerndokumente auf XS:

  1. perlxstut (XS-Tutorial)
  2. perlxs (XS Referenz)
  3. perlapi (Interpreter API)

Zusätzlich gibt es viele Tutorials und Anleitungen im Internet.

Jetzt erfordert die Anbindung an C++ mit XS einige zusätzliche Schritte. Es kann ein bisschen frustrierend sein, zuerst zu trainieren, aber es fügt sich ordentlich zusammen, sobald Sie es verstanden haben. In dieser Hinsicht ist die Kerndokumentation bestenfalls spärlich. Aber alles ist nicht verloren. Mattia Barbon, der Schöpfer der wxWidgets-Bindungen für Perl, hat ein großartiges Werkzeug "XS ++" geschrieben, das diese fast tot einfach macht (oder so einfach wie XS). Es ist in Wx enthalten, aber wir arbeiten daran, es in seine eigene Distribution aufzuteilen. Dies ist in Arbeit. Sie können Mattia's XS++ code und modified version of mine auf GitHub finden.

Release eines eigenständigen XS ++ zu CPAN Barring, würde ich vorschlagen lernen XS für C++ zu schreiben, aus anderen Quellen:

  • vor langer Zeit recht, schrieb John Keiser eine ausgezeichnete tutorial on XS and C++. Es enthält auch weitere Hinweise auf nützliche Tools und Dokumentation.
  • Ich lernte XS & C++ aus diesem Tutorial und einige Beispiele, die ich auf CPAN gefunden habe. Ich kann mich nicht erinnern, was ich damals angeschaut habe. Aber jetzt kann ich auf meine eigene Arbeit als ein (gut oder schlecht, ich weiß es nicht) Beispiel hinweisen: Math::SymbolicX::FastEvaluator.
  • Ähnlich enthält die geplante XS ++ - Distribution eine complete (albeit pointless) example von XS ++ zu Schnittstelle C++ und Perl. Da XS ++ in XS konvertiert wird, können Sie es verwenden, um Beispiele zu generieren.

PS: Es gibt auch das Inline :: CPP-Modul. Wenn das funktioniert, ist es wahrscheinlich die einfachste Lösung. Ich bezweifle jedoch, dass es mit Vorlagen umgehen kann.

+0

Vergessen, ein kleines Detail zu erwähnen: John Keisers Tutorial hat einen Link zu Dean Roehrichs CPAN-Verzeichnis. Die Verbindung führt zu einem veralteten CPAN-Spiegel. Versuchen Sie dies stattdessen: http://search.cpan.org/CPAN/authors/id/DMR/ – tsee

+0

XS ++ wurde als ExtUtils :: XSpp zu CPAN freigegeben: http://search.cpan.org/dist/ExtUtils-XSpp Es ist immer noch in den frühen Tagen, aber ich habe erfolgreich Wx.pm damit gebaut. – tsee

10

prüfen http://www.swig.org:

„SWIG ist ein Software-Entwicklungs-Tool die und C geschriebene Programme in C verbindet ++ mit einer Vielzahl von High-Level- Programmiersprachen SWIG verwendet wird mit verschiedenen Arten von Sprachen. einschließlich der gängigen Skriptsprachen wie Perl, PHP, Python, Tcl und Ruby. "

7

Ich würde normalerweise wählen XS, wie Tsee, aber es gibt auch Inline::C (oder Inline::CPP in diesem Fall).Ich mag SWiG nicht und tendiere dazu, Pakete zu vermeiden, die darum herum gebaut werden.

+2

Das OP will wahrscheinlich Inline :: CPP. – runrig

+0

Sicher wahr. Ich war mir darüber selbst nicht bewusst. – jettero

+1

+1 Die 'Inline' Module machen es wirklich einfacher, fremden Code in Perl zu integrieren. – mob

Verwandte Themen