有沒有辦法將Ruby對象傳遞給C++應用程序?我從來沒有做過這種事情,並想知道這是否可能。它需要修改Ruby核心代碼嗎?用C++擴展Ruby?
1
A
回答
5
分別是和否。
Ruby是用C編寫的。C++在設計上是C兼容的。
Ruby中的所有對象都由一個VALUE對象(這是一個union
類型)保存,它可以很容易地傳遞。
您發現的任何用於擴展帶有C的Ruby的方向都適用於C++,只需稍作修改即可。或者,您可以使用SWIG等簡化書寫擴展。
1
Programming Ruby本書有關於從C訪問Ruby的一些細節。我不確定當前的文檔是如何。這個blog post也描述了Ruby C API。
1
用C++擴展Ruby不是問題。基本上你需要編寫擴展來聲明擴展的init方法爲extern「C」時,要記住,像這樣的唯一的事情:
的extern「C」無效Init_your_extension(){// ... }
我最近揭露C++函數到我的Ruby代碼,你可以在這裏找到的代碼,如果你想要的(它只是基本的東西,所以我認爲這將是很好的讓你開始):http://github.com/psyho/aspell_edit_dist
0
您可以使用Rice在C++中構建Ruby擴展,看看http://www.ibm.com/developerworks/library/os-extendruby/
相關問題
- 1. 編譯Ruby的C++擴展
- 2. 如何用c擴展名擴展我的ruby類?
- 3. 在C Ruby擴展使用curl/libcurl的
- 4. 使用Singleton的Ruby C擴展
- 5. 使用ASP.NET c#與Sketchup Ruby擴展
- 6. ruby類擴展
- 7. Ruby擴展NilClass
- 8. Ruby 1.9.1-p378 C擴展rb_block_call奇怪
- 9. Ruby C擴展rb_str_new2似乎返回false
- 10. 在Ruby中創建C擴展
- 11. 更新C擴展爲Ruby 1.9
- 12. 從Ruby C擴展中抑制STDOUT
- 13. 向Ruby寫入C擴展的好處
- 14. 加載路徑和Ruby C擴展
- 15. 無法創建C++ ruby擴展
- 16. Ruby的C擴展不能「require'd
- 17. 別名module`s方法C(Ruby擴展)
- 18. 在C中的Ruby擴展,LoadError
- 19. ruby c擴展:字符值超過127
- 20. Ruby擴展由FFI
- 21. Ruby:擴展自我
- 22. Rails - 擴展Ruby Gem
- 23. 用C宏擴展/ C++
- 24. 如何在Ruby Gem中包裝Ruby C擴展?
- 25. Ruby C擴展:將int函數轉化爲ruby值
- 26. Ruby擴展鏈接錯誤
- 27. Ruby on Rails:擴展ActiveRecord :: Errors
- 28. 在Ruby中擴展對象
- 29. 擴展Ruby on Rails站點
- 30. Ruby擴展爲對象類
When Ruby變得太慢了,我認爲它正在被C擴展。 – 2010-01-13 01:36:43