まつなみです。

 現在C++BuilderにてRubyの拡張ライブラリを作成しようと考えています。
C++BuilderでDLLを作ってRubyで利用しようと考えています。

#include "ruby.h"

VALUE test(int n){
  int i;
  for( i = 0; i < (FIX2INT(n)); i++){
  }
  return Qnil;
}

Init_test(){
  rb_define_global_function("test",test,1);
}


 というのを仮に作ったとするとCでコンパイルでは問題ないですが、
C++でコンパイルすると関数のポインタの型が違うということで
怒られてしまいます。 ruby.hではC++でコンパイルすると、

void rb_define_global_function( const char *name, VALUE (*func)(...), 
                                int argc )

という定義になり、

VALUE test(...){
}

とすることで解消されます。
この場合可変引数を定義になっておりますが、stdargs.h とvarargs.hが
共存できない場合、(VCL.hがstdargs.hをincludeしているのでエラーになる)
どのような形で引数をとればいいのでしょうか?
 stdargs.hでvarargs.hのような固定引数のないva_startを記述するためには
どうすればいいのでしょうか?

#この質問、CのFAQでしょうか、、、

 よろしくお願いします。

環境
C++Builder6
WindowsXP
Ruby1.6.8(mswin32)


 ではでは