2009-06-01 43 views

回答

13

我不是特別喜歡SWIG,更喜歡自己編寫接口代碼。 Perl帶有一種叫做'XS'的僞語言,用於連接到C或C++。不幸的是,爲了使用它,你至少需要知道C,Perl,然後學習一些關於解釋器API的知識。如果你已經熟悉Perl和C,那麼它不是這樣的邁出了一大步。看看上XS以下核心文件:

  1. perlxstut(XS教程)
  2. perlxs(XS參考)
  3. perlapi(翻譯API)

此外,還有很多教程和互聯網上的how-tos。

現在,使用XS連接到C++需要一些額外的步驟。剛開始工作可能有點令人沮喪,但一旦得到它,整齊地落到位。在這方面,核心文件最多是稀少的。但一切都不會丟失。用於Perl的wxWidgets綁定的創建者Mattia Barbon編寫了一個很棒的工具「XS ++」,它使得這個工具變得簡單(或者像XS一樣簡單)。它包含在Wx中,但我們正在努力將其分解成它自己的發行版。這是正在進行中的工作。你可以在github上找到Mattia's XS++ codemodified version of mine

除非有獨立的XS ++到CPAN的釋放,我會建議學習其他資源編寫XS爲C++:

  • 相當長一段時間以前,約翰·凱澤寫了一個極好的tutorial on XS and C++。它還包含有用的工具和文檔的更多指針。
  • 我從該教程中學習了XS & C++以及我在CPAN上找到的一些示例。我不記得當時看到的是什麼。但是現在我可以指出我自己的工作是(好還是壞,我不知道)例如:Math::SymbolicX::FastEvaluator
  • 同樣,計劃中的XS ++分佈包含使用XS ++來接口C++和Perl的complete (albeit pointless) example。由於XS ++被翻譯成普通的XS,你可以用它來生成的例子。

PS:還有Inline :: CPP模塊。如果可行,這可能是最簡單的解決方案。不過,我懷疑它可以處理模板。

+0

忘了提一點細節:John Keizer的教程有鏈接到Dean Roehrich的CPAN目錄。鏈接是一個陳舊的CPAN鏡像。試試這個:http://search.cpan.org/CPAN/authors/id/DMR/ – tsee 2009-06-01 16:58:04

+0

XS ++已經作爲ExtUtils :: XSpp發佈到CPAN:http://search.cpan.org/dist/ExtUtils-XSpp 它還處於早期階段,但我已經成功構建了Wx.pm。 – tsee 2009-06-19 09:58:14

10

檢查http://www.swig.org

「SWIG是一個軟件開發工具 與各種高級別 編程語言的連接用C寫的 和C++編寫的程序痛飲使用 與不同類型的語言。 包括常見腳本語言 ,如Perl,PHP,Python,Tcl和Ruby。「

7

我通常會選擇XS,就像tsee,但也有Inline::C(或在這種情況下爲Inline::CPP)。我不喜歡SWiG,並且傾向於避免圍繞它構建的包。