こんにちは、なかむら(う)です。

In message "[ruby-list:44097] Re: Windowsアプリにrubyを組み込んだときのエラーメッセージ"
    on Oct.10,2007 22:55:02, <minato.daisuke / gmail.com> wrote:
| Windowsでは同じようにすると
| 
| Fixnum: -657714433
| 
| などというメッセージが返され正しいメッセージが返されません。
| 
| あとWindowsではrb_load_protectをした後に
| ruby_sourcefile, ruby_sourceline
| を参照しましたが
| ((eval)) 0
| などというメッセージが得られて
| エラー行とファイル名を得られることができませんでした。
| これもエラーメッセージとエラー行とファイル名を得たいのですが
| どのようにしたらよろしいのでしょうか。

ちゃんとエラーメッセージが得られますよ?

#include <ruby.h> void output_eval_error(int error) { if(error) { VALUE eclass = CLASS_OF(ruby_errinfo); VALUE einfo = rb_obj_as_string(ruby_errinfo); if(eclass == rb_eRuntimeError && RSTRING(einfo)->len == 0) { MessageBox(NULL, "unhandled exception", "Error", MB_OK); } else { VALUE epath = rb_class_path(eclass); char tmp[BUFSIZ]; sprintf(tmp, "%s: %s", RSTRING(epath)->ptr, RSTRING(einfo)->ptr); MessageBox(NULL, tmp, "error", MB_OK); } } } int WINAPI WinMain(HINSTANCE current, HINSTANCE prev, LPSTR cmdline, int showcmd) { int error; int argc = 0; char** argv = NULL; NtInitialize(&argc, &argv); { RUBY_INIT_STACK ruby_init(); } rb_eval_string_protect("ptus 'aaa'", &error); output_eval_error(error); return 0; }
それでは。 -- U.Nakamura <usa / garbagecollect.jp>