Мне очень сложно понять, почему мои вызовы rb_define_singleton и rb_define_method ломаются, когда я запускаю команду rake compile
.
Во-первых, одна из проблем может заключаться в том, что я на самом деле не уверен, что на самом деле представляет последний целочисленный аргумент, чтобы решить, какое значение использовать, и я не смог найти документацию, объясняющую это, но я чувствую, что просто догадываюсь об этом но проблема, похоже, в третьем аргументе, поэтому меня беспокоит то, что
Во-вторых, моя сборка завершается ошибкой при вызове make
:
сделать компиляцию ../../../../ext/fftw/fftw.cpp ../../../../ext/fftw/fftw.cpp: В функции 'void Init_fftw ()': ../../../../ext/fftw/fftw.cpp:64:58: ошибка: недопустимое преобразование из 'VALUE () (VALUE, VALUE) {aka long unsigned int ( em >) (long unsigned int, long unsigned int)} 'to' VALUE () (...) {aka long unsigned int () (...)} '[-fpermissive] rb_define_singleton_method ( cNMatrix, "r2c", fftw_r2c, 1); ^ В файле, включенном из /Users/private/.rvm/rubies/ruby-2.1.2/include/ruby-2.1.0/ruby/ruby.h:1694:0, из /Users/private/.rvm/rubies/ ruby-2.1.2 / include / ruby-2.1.0 / ruby.h: 33, из ../../../../ext/fftw/fftw.cpp:1: /Users/private/.rvm /rubies/ruby-2.1.2/include/ruby-2.1.0/ruby/intern.h:216:6: ошибка: инициализация аргумента 3 'void rb_define_singleton_method (VALUE, const char *, VALUE () ( ...), int) '[-fpermissive] void rb_define_singleton_method (VALUE, const char, VALUE (*) (ANYARGS), int); ^ make: * [fftw.o] Ошибка 1 грабли прерваны!
Ошибка означает, что я вообще не могу протестировать функции в Ruby, потому что мне нужно сделать это определение успешным, сначала я вырезал файл до минимума, чтобы попытаться сделать это
До сих пор я пробовал использовать разные типы, но ни один из них, похоже, не работал. Я начинаю подозревать, что неправильно настраиваю extconf с моими флагами и выбором компилятора, но я не уверен.
исходный код неисправного файла находится на github.
Любой совет приветствуется! Спасибо