Почему этот код не работает на ruby ​​1.9, но работает на ruby ​​1.8?

Я загрузил стабильный исходный код ruby ​​с веб-сайта ruby ​​ (1.9.2-p180) и скомпилировал его в Windows с MinGW 4.5.2-TDM и MSYS. Для компиляции я запустил sh configure и make . Я получил msvcrt-ruby191.dll и libmsvcrt-ruby191.dll.a , как и ожидалось. Затем я написал этот код:

#include 
int main() {
  ruby_init();
  rb_funcall2(Qnil, rb_intern("p"), 1, (VALUE[]){INT2FIX(0)});
  ruby_finalize();
}

Я скомпилировал с помощью g ++ , связавшись с dll ruby. Когда я запустил исполняемый файл, я получил это сообщение об ошибке:

: [BUG] Segmentation fault ruby 1.9.2p180 (2011-02-18 revision 30909) [i386-mingw32] -- control frame ---------- c:0002 p:---- s:0004 b:0004 l:000003 d:000003 CFUNC :p c:0001 p:0000 s:0002 b:0002 l:00120c d:00120c TOP --------------------------- -- Ruby level backtrace information ---------------------------------------- ruby:0:in `p' [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

Проблема в том, что тот же код отлично работает при связывании с ruby ​​1.8.7. Что здесь не так?

8
задан Guilherme Bernal 5 July 2011 в 16:04
поделиться