[問題] 在c裡面使用ruby code

看板Ruby作者 (初夏。)時間18年前 (2007/02/09 17:50), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
我想請問一下有沒有人遇過這樣的問題, 我想在c裡面使用用ruby寫的class, 看了幾個範例,遇到幾個問題外,也有幾項疑問, 第一個問題是,在c裡面嵌入ruby code, 我用了"Programming ruby: The Pragmatic Programmers' Guide"中的例子, int main(void) { int value; int *next = Values; ruby_init(); ruby_show_version(); ruby_init_loadpath(); ruby_script("embedded"); rb_require("summer.rb"); // get an instance of Summer ID id = rb_intern("Summer"); VALUE a = rb_const_get(rb_cObject, id); VALUE summer = rb_class_new_instance(0, 0, a); id_sum = rb_intern("sum"); while (value = *next++) { VALUE result = protected_sum(summer, INT2NUM(value)); .......(略) } ruby_finalize(); exit(0); } 在rb_const_get()這裡一直無法執行,顯示DLL, access violation. 可是看了很多sample code也是這樣寫..... class Summer也確定沒有問題。 第二個,我改用另一種方式,main裡面的code改寫成 ruby_init_loadpath(); ruby_script("embedded"); rb_require("myclass.rb"); rb_load_file("e:/test/test.rb"); int status; status = ruby_exec(); status = ruby_cleanup(status); ruby_finalize(); 可以正確執行結果,所以我猜想應該ruby提供給c的dll也沒錯吧? 只是這個方法只能一次執行那個檔案,可是我想要呼叫那個class的method啊~~~ XD 請各位先知先學告訴我一條明路吧~~ 感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.86.128.60

02/09 20:54, , 1F
如果你可以用 C++, 我是推薦 SWIG...
02/09 20:54, 1F

02/11 12:55, , 2F
因為不是自己要用的,所以得允許c能call....
02/11 12:55, 2F

02/11 20:12, , 3F
我在想可能是那個 dll 有問題啦…考慮自己編譯看看?
02/11 20:12, 3F
文章代碼(AID): #15p4F98U (Ruby)
文章代碼(AID): #15p4F98U (Ruby)