作者ankasc (初夏。)
看板Ruby
标题[问题] 在c里面使用ruby code
时间Fri Feb 9 17:50:00 2007
我想请问一下有没有人遇过这样的问题,
我想在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
1F:推 godfat:如果你可以用 C++, 我是推荐 SWIG... 02/09 20:54
2F:→ ankasc:因为不是自己要用的,所以得允许c能call.... 02/11 12:55
3F:推 godfat:我在想可能是那个 dll 有问题啦…考虑自己编译看看? 02/11 20:12