おっしゃるとおりにしたら、できました。

ありがとうございました!


(2013/07/14 11:50), Yugui wrote:
> C++ではこの辺りの型チェックがCよりもきついので明示的にキャストしてやらねばなりません。
> 
> rb_define_module_function(mTmp, "some_func", reinterpret_cast<VALUE(*)(...)>(Some_func), 0);
> 
> としてください。
> 
> 
> 
> 2013/7/11 Ueki,Hikonuki <ueki.hikonuki / jcom.home.ne.jp <mailto:ueki.hikonuki / jcom.home.ne.jp>>
> 
>     はじめまして、植木です。
> 
>     Rubyから呼ぶべき関数がC++のライブラリなので、いろいろ調べたところ extconf.rbで
> 
>     require 'mkmf'
>     $LIBS << " -lstdc++ -lc"
>     $CC == "g++"
>     $CXX == $CC
> 
>     などとやると、一応g++でコンパイルしてくれるようになりました
>     (これが正しい対処かはやや疑問ですが)。
> 
>     しかし、makeすると
> 
>     error: invalid conversion from 'VALUE (*)(VALUE)' to 'VALUE (*)(...)'
> 
>     となってしまいます。該当箇所は
> 
>     rb_define_module_function(mTmp, "some_func", Some_func, 0);
> 
>     という行です。Some_funcの定義は
> 
> 
>     static VALUE Some_func(VALUE obj)
>     {
>        .....
> 
>     のようなかんじです。Cであれば問題ない記述だと思うのですが、どうすればいいでしょうか?
> 
>     rubyは1.8.5です。
> 
>     以上よろしくお願いします。
> 
> 
> 
> 
> -- 
> Yuki Sonoda (Yugui)
> yugui / yugui.jp <mailto:yugui / yugui.jp>
> http://yugui.jp