rake compile
명령을 실행하면 내 rb_define_singleton 및 rb_define_method 호출이 중단되는 이유를 파악하는 데 많은 어려움을 겪고 있습니다.c (또는 C++)에서 rb_define_singleton_method 사용
첫째, 하나의 문제는 내가 사용하는 값을 결정하기 위해 마지막 정수 인수가 실제로 무엇을 나타내는 지에 대해 잘 모르겠다는 것입니다. 그리고 이것을 설명하는 문서를 찾을 수 없었습니다. 그렇기 때문에 나는 그냥 추측하지만 문제는 내 관심사는
이 두 번째로, 내 빌드 make
를 호출에 다음과 같은 오류와 함께 실패 그래서 어쨌든 세번째 인수 것 같다 오전 :
make compiling ../../../../ext/fftw/fftw.cpp ../../../../ext/fftw/fftw.cpp: In function 'void Init_fftw()': ../../../../ext/fftw/fftw.cpp:64:58: error: invalid conversion from 'VALUE ()(VALUE, VALUE) {aka long unsigned int ()(long unsigned int, long unsigned int)}' to 'VALUE ()(...) {aka long unsigned int ()(...)}' [-fpermissive] rb_define_singleton_method(cNMatrix, "r2c", fftw_r2c, 1); ^In file included from /Users/private/.rvm/rubies/ruby-2.1.2/include/ruby-2.1.0/ruby/ruby.h:1694:0, from /Users/private/.rvm/rubies/ruby-2.1.2/include/ruby-2.1.0/ruby.h:33, from ../../../../ext/fftw/fftw.cpp:1: /Users/private/.rvm/rubies/ruby-2.1.2/include/ruby-2.1.0/ruby/intern.h:216:6: error: initializing argument 3 of '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] Error 1 rake aborted!
오류가 나는 아니다 의미 이 정의를 성공적으로 만들어야하기 때문에 루비에서 함수를 테스트 할 수 있습니다. f irst 그래서 나는 그것을 시도하고 최소한하려고 파일을 벗겼다
지금까지 나는 어느 쪽도 일하는 것처럼 보였던 여러 가지 타입으로 주조하려고 노력했다. 나는 플래그와 컴파일러 선택으로 extconf에서 잘못 설정하고 있다고 생각하기 시작했다. 그러나 나는 확실하지 않다.
source code for the failing file is on github
어떤 조언을 환영받을 것입니다! 감사합니다
이것은 좋은 해결책으로 현재 해결 된 내 문제를 정확하게 해결하지 못하므로 선택할 수 없습니다. 이 버그에 대한 응답에서 찾은 전체 솔루션을 https://github.com/thisMagpie/fftw/issues/22에 추가 한 다음 선택하면됩니까? – Magpie
RUBY_METHOD_FUNC (some_function)가 정확한 타입 변환을 수행합니다. 원하는 답을 받아들이면 자유 롭습니다. –
나는 둘 다 생각하는 것이 좋습니다. 이것을 올바르게 시험해보고 그것이 어떻게 작동 하는지를 이해할 수 있는지 알아 보겠습니다. – Magpie