我正在使用 C Ruby 接口在 swift 应用程序中嵌入一个 ruby 解释器(尽管,我使用的 swift 与 Imo 无关)
我觉得 Ruby必须有某种方式来完全重新初始化自己。
我正在像这样初始化虚拟机:
var variable_in_this_stack_frame:UnsafeMutablePointer<VALUE>? = nil
ruby_init_stack(variable_in_this_stack_frame)
ruby_init()
ruby_init_loadpath()
rb_require("enc/encdb")
rb_require("enc/trans/transdb")
var node = ruby_options(Int32(options.count), &cargs)
评估一些代码:
var state: Int32 = 0;
if ruby_executable_node(node, &state) != 0 {
state = ruby_exec_node(node)
}
if state != 0 {
throw RubyError(err: RTypedValue(VALUE: rb_errinfo()))
}
并像这样破坏虚拟机:
var state: Int32 = 0
ruby_cleanup(state)
然而,第二次做这一切,我EXC_BAD_ACCESS
在跑步时得到:ruby_init_loadpath()
我应该如何重新启动?