2010-01-13 57 views
1

有沒有辦法將Ruby對象傳遞給C++應用程序?我從來沒有做過這種事情,並想知道這是否可能。它需要修改Ruby核心代碼嗎?用C++擴展Ruby?

+0

When Ruby變得太慢了,我認爲它正在被C擴展。 – 2010-01-13 01:36:43

回答

5

分別是和否。

Ruby是用C編寫的。C++在設計上是C兼容的。

Ruby中的所有對象都由一個VALUE對象(這是一個union類型)保存,它可以很容易地傳遞。

您發現的任何用於擴展帶有C的Ruby的方向都適用於C++,只需稍作修改即可。或者,您可以使用SWIG等簡化書寫擴展。

1

用C++擴展Ruby不是問題。基本上你需要編寫擴展來聲明擴展的init方法爲extern「C」時,要記住,像這樣的唯一的事情:

的extern「C」無效Init_your_extension(){// ... }

我最近揭露C++函數到我的Ruby代碼,你可以在這裏找到的代碼,如果你想要的(它只是基本的東西,所以我認爲這將是很好的讓你開始):http://github.com/psyho/aspell_edit_dist