FUNC_CDECL/FUNC_STDCALL are not defined?

e$BLZB<$G$9!#e(B

1.8.5-preview1e$B$NOCBj$K3d$j9~$`7A$G?=$7Lu$"$j$^$;$s$,!"$5$-$[$Ie(B
CVS HEAD e$B$N%3%s%Q%$%k$r;n$_$?$H$3$me(B(VC++ 7.1 Windows
2000SP4)e$B!"e(B
ext/dl
e$B$N%3%s%Q%$%k$Ge(Bcallback.he$B$K4X$7$FBgNL$K%3%s%Q%$%k%(%i!<$,e(B
e$BH/@8$7$F%S%k%I$K<:GT$7$^$7$?!#e(B

ChangeLoge$B$r$_$F$b$3$3?tF|$Ge(B ext/dl
e$B$,=$@5$5$l$?5$G[$O$J$$$N$G$9$,!"e(B
callback.h e$B$NCf$Ge(B

FUNC_CDECL(static void
rb_dl_callback_void_2_0_cdecl(DLSTACK_TYPE stack0, DLSTACK_TYPE stack1))

e$B$N$h$&$K;H$o$l$F$$$ke(B FUNC_CDECL e$B$de(B
FUNC_STDCALLe$B$H$$$&%^%/%m$,$I$3$G$be(B
e$BDj5A$5$l$:!"4X?t07$$$5$l$k$?$a$K$D$8$D$^$,9g$o$J$/$J$C$F%(%i!<$K$J$C$Fe(B
e$B$$$k$h$&$G$9!#e(B

e$B$H$j$"$($:$`$j$d$j$3$l$iFs$D$N%^%/%m$rE,Ev$KDj5A$7$F$d$k$3$H$G%3%s%Q%$%ke(B
e$B$O$G$-!"e(Bnmake test e$B$bDL$j$^$7$?!#e(B

e$B$H$j$"$($:Js9p$^$G!#e(B

U.Nakamura wrote:

| ChangeLoge$B$r$_$F$b$3$3?tF|$Ge(B ext/dl e$B$,=$@5$5$l$?5$G[$O$J$$$N$G$9$,!"e(B
[ruby-cvs:17051]e$B$G$9$M!#0l:rF|$NL$L@$K$J$j$^$9!#e(B

e$B;d$,$d$k$H!“e(BFUNC_e$B$J$s$?$i$rDj5A$9$k$3$H$rHr$1$A$c$C$F$3$s$J$se(B
e$B$K$J$j$=$&$G$9$,!”$+$C$3$o$k$$e(B…

FUNC_STDCALL/CDECLe$B$,Dj5A$5$l$J$$$3$H$,%3%s%Q%$%k%(%i!<$N860x$G$"$l$P!"e(B
configure.ine$B$GBP=h$9$kJ}$,NI$$$H;W$$$^$9!#e(B

DECL_FUNC_STDCALL/CDECLe$BAjEv$be(Bconfiguree$B$G@Dj$7$FM$7$$$H$O;W$&$1$I!De(B

e$BLZB<$G$9!#e(B

U.Nakamura e$B$5$s$O=q$-$^$7$?e(B (2006/07/03 21:10):

| ChangeLoge$B$r$_$F$b$3$3?tF|$Ge(B ext/dl e$B$,=$@5$5$l$?5$G[$O$J$$$N$G$9$,!"e(B

[ruby-cvs:17051]e$B$G$9$M!#0l:rF|$NL$L@$K$J$j$^$9!#e(B

e$B$J$k$[$I!#$=$A$i$O%A%’%C%/$7$F$$$^$;$s$G$7$?!#e(B

| e$B$H$j$"$($:$`$j$d$j$3$l$iFs$D$N%^%/%m$rE,Ev$KDj5A$7$F$d$k$3$H$G%3%s%Q%$%ke(B
| e$B$O$G$-!"e(Bnmake test e$B$bDL$j$^$7$?!#e(B

e$BLZB<$5$s$O$I$&Dj5A$7$^$7$?e(B?

e$B$$$(!"$H$j$"$($:7o$NFs$D$N%^%/%m$,860x$G$"$k$3$H$r3NG’$9$k$?$a$Ke(B
callback.he$B$KD>@<j$GDj5A$7$F5-=R$7$?$@$1$G$9!#e(B

e$B$G!"%S%k%[email protected]"*e(Bnmake test
[email protected]$^$G3N$+$a$?$H$3$m$G;~4V@Z$l$Ke(B
e$B$J$C$F$7$^$$$^$7$?!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28945] Re: FUNC_CDECL/FUNC_STDCALL are not
defined?”
on Jul.03,2006 23:07:26, [email protected] wrote:
| > e$B;d$,$d$k$H!“e(BFUNC_e$B$J$s$?$i$rDj5A$9$k$3$H$rHr$1$A$c$C$F$3$s$J$se(B
| > e$B$K$J$j$=$&$G$9$,!”$+$C$3$o$k$$e(B…
|
| FUNC_STDCALL/CDECLe$B$,Dj5A$5$l$J$$$3$H$,%3%s%Q%$%k%(%i!<$N860x$G$"$l$P!"e(B
| configure.ine$B$GBP=h$9$kJ}$,NI$$$H;W$$$^$9!#e(B

e$B$$$d!“$J$<Dj5A$7$F$J$$$+$H$$$&$H!”$=$N0z?t$G$O!VL5M}!W$J$N$Ge(B…
VC++e$B$N>l9g!"e(B

e$BLa$jCMe(B __cdecle$B$H$+e(B__stdcalle$B$H$+e(B
e$B4X?tL>e(B(e$B0z?t%j%9%He(B)

e$B$H$J$i$J$$$H$$$1$J$$$N$G!"$I$&$7$h$&$b$J$$$N$G$9!#e(B

e$B:#2s$N>l9g$KOC$r8BDj$9$l$P!"e(B

#define FUNC_CDECL(x) __cdecl##x
#define __cdeclvoid void __cdecl
#define __cdeclchar char __cdecl

e$B$J$I$H$d$C$F!"e(Bmkcallback.rbe$B$Oe(B

static FUNC_#{calltype.upcase}(#{DLTYPE[ty][:type]}
#{func_name(ty,argc,n,calltype)}(#{(0…argc).collect{|i|
“DLSTACK_TYPE stack” + i.to_s}.join(", ")}))

e$B$H$9$l$P!“$$$1$J$$$3$H$b$J$$$+$b$7$l$^$;e(B… e$B$”!"La$jCM$,%]%$e(B
e$B%s%?7?$@$H%@%a$@!#e(B

e$B$H$$$&$o$1$G!“<j$rH4$$$F$$$k$o$1$8$c$J$/$F!”$=$l$,DLMQ$7$J$$e(B
e$B4D6-$b$“$k$N$G!”$4G[N8$r$*4j$$$7$^$9$G$9!#e(B

e$B$=$l$G$O!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28942] FUNC_CDECL/FUNC_STDCALL are not defined?”
on Jul.03,2006 19:53:15, [email protected] wrote:
| 1.8.5-preview1e$B$NOCBj$K3d$j9~$`7A$G?=$7Lu$“$j$^$;$s$,!”$5$-$[$Ie(B
| CVS HEAD e$B$N%3%s%Q%$%k$r;n$_$?$H$3$me(B(VC++ 7.1 Windows 2000SP4)e$B!"e(B
| ext/dl e$B$N%3%s%Q%$%k$Ge(Bcallback.he$B$K4X$7$FBgNL$K%3%s%Q%$%k%(%i!<$,e(B
| e$BH/@8$7$F%S%k%I$K<:GT$7$^$7$?!#e(B

e$B:F8=$7$^$7$?!#e(B

e$B$A$J$_$K!“e(BVC++e$B0J30$G$b!”<j85$Ne(BNetBSDe$B$G$be(B

In file included from …/…/…/current/ext/dl/dl.c:77:
callback.h:9: error: parse error before ‘{’ token
callback.h:12: error: initializer element is not constant
callback.h:12: warning: data definition has no type or storage class

e$B$H$+$K$J$C$F%3%s%Q%$%k$K<:GT$7$^$9!#e(B
chkbuilde$B$Ne(BNetBSD
[email protected]$7$F$k$N$G!“e(Bgcce$B$N%P!<%8%g%s$+$Je(B
e$B$s$+$,1F6A$7$F$=$&$G$O$”$j$^$9$,!#e(B

| ChangeLoge$B$r$_$F$b$3$3?tF|$Ge(B ext/dl e$B$,=$@5$5$l$?5$G[$O$J$$$N$G$9$,!"e(B

[ruby-cvs:17051]e$B$G$9$M!#0l:rF|$NL$L@$K$J$j$^$9!#e(B

| e$B$H$j$"$($:$`$j$d$j$3$l$iFs$D$N%^%/%m$rE,Ev$KDj5A$7$F$d$k$3$H$G%3%s%Q%$%ke(B
| e$B$O$G$-!"e(Bnmake test e$B$bDL$j$^$7$?!#e(B

e$BLZB<$5$s$O$I$&Dj5A$7$^$7$?e(B?

e$B;d$,$d$k$H!“e(BFUNC_e$B$J$s$?$i$rDj5A$9$k$3$H$rHr$1$A$c$C$F$3$s$J$se(B
e$B$K$J$j$=$&$G$9$,!”$+$C$3$o$k$$e(B…

Index: ext/dl/cfunc.c

RCS file: /home/cvs/ruby/ext/dl/cfunc.c,v
retrieving revision 1.5
diff -u -1 -p -r1.5 cfunc.c
— ext/dl/cfunc.c 30 Jun 2006 18:05:34 -0000 1.5
+++ ext/dl/cfunc.c 3 Jul 2006 12:03:23 -0000
@@ -225,8 +225,8 @@ rb_dlcfunc_inspect(VALUE self)
#if defined(GNUC)
-# define DECL_FUNC_CDECL(f,ret,args) FUNC_CDECL(ret (*f)(args))
-# define DECL_FUNC_STDCALL(f,ret,args) FUNC_STDCALL(ret (*f)(args))
+# define DECL_PFUNC_CDECL(f,ret,args) FUNC_CDECL(ret (*f)(args))
+# define DECL_PFUNC_STDCALL(f,ret,args) FUNC_STDCALL(ret (f)(args))
/
# define DECL_FUNC(f,ret,args,calltype) ret (*f)(args) */
#elif defined(_MSC_VER) || defined(BORLANDC)
-# define DECL_FUNC_CDECL(f,ret,args) ret (__cdecl *f)(args)
-# define DECL_FUNC_STDCALL(f,ret,args) ret (__stdcall *f)(args)
+# define DECL_PFUNC_CDECL(f,ret,args) ret (__cdecl *f)(args)
+# define DECL_PFUNC_STDCALL(f,ret,args) ret (__stdcall *f)(args)
#else
@@ -277,3 +277,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •        DECL_FUNC_CDECL(f,void,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •        DECL_PFUNC_CDECL(f,void,DLSTACK_PROTO##n) = cfunc->ptr; \
      f(DLSTACK_ARGS##n(stack)); \
    

@@ -286,3 +286,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,void*,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,void*,DLSTACK_PROTO##n) = cfunc->ptr; \
      void * ret; \
    

@@ -296,3 +296,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,char,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,char,DLSTACK_PROTO##n) = cfunc->ptr; \
      char ret; \
    

@@ -306,3 +306,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,short,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,short,DLSTACK_PROTO##n) = cfunc->ptr; \
      short ret; \
    

@@ -316,3 +316,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,int,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,int,DLSTACK_PROTO##n) = cfunc->ptr; \
      int ret; \
    

@@ -326,3 +326,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,long,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,long,DLSTACK_PROTO##n) = cfunc->ptr; \
      long ret; \
    

@@ -337,3 +337,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,LONG_LONG,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,LONG_LONG,DLSTACK_PROTO) = cfunc->ptr; \
      LONG_LONG ret; \
    

@@ -348,3 +348,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,float,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,float,DLSTACK_PROTO) = cfunc->ptr; \
      float ret; \
    

@@ -358,3 +358,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_CDECL(f,double,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_CDECL(f,double,DLSTACK_PROTO) = cfunc->ptr; \
      double ret; \
    

@@ -375,3 +375,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •        DECL_FUNC_STDCALL(f,void,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •        DECL_PFUNC_STDCALL(f,void,DLSTACK_PROTO##n) = cfunc->ptr; \
      f(DLSTACK_ARGS##n(stack)); \
    

@@ -384,3 +384,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,void*,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,void*,DLSTACK_PROTO##n) = cfunc->ptr; \
      void * ret; \
    

@@ -394,3 +394,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,char,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,char,DLSTACK_PROTO##n) = cfunc->ptr; \
      char ret; \
    

@@ -404,3 +404,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,short,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,short,DLSTACK_PROTO##n) = cfunc->ptr; \
      short ret; \
    

@@ -414,3 +414,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,int,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,int,DLSTACK_PROTO##n) = cfunc->ptr; \
      int ret; \
    

@@ -424,3 +424,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,long,DLSTACK_PROTO##n) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,long,DLSTACK_PROTO##n) = cfunc->ptr; \
      long ret; \
    

@@ -435,3 +435,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,LONG_LONG,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,LONG_LONG,DLSTACK_PROTO) = cfunc->ptr; \
      LONG_LONG ret; \
    

@@ -446,3 +446,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,float,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,float,DLSTACK_PROTO) = cfunc->ptr; \
      float ret; \
    

@@ -456,3 +456,3 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
#define CASE(n) case n: { \

  •   DECL_FUNC_STDCALL(f,double,DLSTACK_PROTO) = cfunc->ptr; \
    
  •   DECL_PFUNC_STDCALL(f,double,DLSTACK_PROTO) = cfunc->ptr; \
      double ret; \
    

Index: ext/dl/dl.h

RCS file: /home/cvs/ruby/ext/dl/dl.h,v
retrieving revision 1.13
diff -u -1 -p -r1.13 dl.h
— ext/dl/dl.h 5 Feb 2005 13:58:08 -0000 1.13
+++ ext/dl/dl.h 3 Jul 2006 12:03:23 -0000
@@ -182,2 +182,13 @@ VALUE rb_dlptr_malloc(long size, freefun

+#if defined(GNUC)
+# define DECL_FUNC_CDECL(f,ret,args) FUNC_CDECL(ret f(args))
+# define DECL_FUNC_STDCALL(f,ret,args) FUNC_STDCALL(ret f(args))
+/* # define DECL_FUNC(f,ret,args,calltype) ret (*f)(args) */
+#elif defined(_MSC_VER) || defined(BORLANDC)
+# define DECL_FUNC_CDECL(f,ret,args) ret __cdecl f args
+# define DECL_FUNC_STDCALL(f,ret,args) ret __stdcall f args
+#else
+# error “unsupported compiler.”
+#endif
+
#endif
Index: ext/dl/mkcallback.rb

RCS file: /home/cvs/ruby/ext/dl/mkcallback.rb,v
retrieving revision 1.10
diff -u -1 -p -r1.10 mkcallback.rb
— ext/dl/mkcallback.rb 30 Jun 2006 18:05:34 -0000 1.10
+++ ext/dl/mkcallback.rb 3 Jul 2006 12:03:23 -0000
@@ -113,4 +113,3 @@ for calltype in CALLTYPES

-FUNC_#{calltype.upcase}(static #{DLTYPE[ty][:type]}
-#{func_name(ty,argc,n,calltype)}(#{(0…argc).collect{|i| “DLSTACK_TYPE
stack” + i.to_s}.join(", “)}))
+DECL_FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)},static
#{DLTYPE[ty][:type]},(#{(0…argc).collect{|i| “DLSTACK_TYPE stack” +
i.to_s}.join(”, ")}))
{

e$B$=$l$G$O!#e(B

Takaaki T. wrote:

DECL_FUNC_STDCALL/CDECLe$BAjEv$be(Bconfiguree$B$G@Dj$7$FM$7$$$H$O;W$&$1$I!De(B

e$B$9$$$^$;$s!#$3$l$K4X$7$F$O4*0c$$$7$F$$$?$h$&$G$9!#e(B

e$B$=$l$G!"<+J,$G$$$m$$$m$J%3%s%Q%$%i$rD4$Y$k$@$1$N;~4V$,$H$l$J$$$N$Ge(B
e$B$*J9$-$7$?$$$N$G$9$,!"Nc$($P!"e(B

attribute ((cdecl)) void (*foo)();

attribute ((cdecl)) void foo();

attribute ((cdecl) void foo(){

}

e$B$H$$$&e(B3e$B$D$NDj5A$O>o$K$[$\F1$8$h$&$K5-=R$G$-$k$b$N$J$N$G$7$g$&$+!)e(B

URABE Shyouhei wrote:

Takaaki T. wrote:

e$B$H$$$&e(B3e$B$D$NDj5A$O>o$K$[$\F1$8$h$&$K5-=R$G$-$k$b$N$J$N$G$7$g$&$+!)e(B

e$BF1$8$h$&$K5-=R$G$-$k$H$$$&$N$O$I$&$$$&0UL#$G$7$g$&$+!#e(B
e$B>/$J$/$H$bNc$K$"$,$C$?;0$D$O$=$l$>$l$K%;%^%s%F%#%/%9$,0[$J$j$^$9!#e(B

e$B@bL@ITB-$G?=$7Lu$"$j$^$;$s!#$H$O$$$(!“85$NLdBj$H4XO”$7$F!“E,@Z$JJ8>Oe(B(e$BMQ8le(B)
e$B$,$9$0$K$O$G$F$-$^$;$s!#$=$N$?$a!”$7$P$i$/BT$C$FD:$$$F$b59$7$$$G$7$g$&$+!)e(B

(e$B$=$b$=$b$^$s$J$+$NNc$ODj5A$G$O$"$j$^$;$s!#e(B)

#e$B$O$$!"$$C$7$c$k$H$$j$G$9!#e(B

e$BKNIt$G$9!#e(B

Takaaki T. wrote:

e$B$H$$$&e(B3e$B$D$NDj5A$O>o$K$[$\F1$8$h$&$K5-=R$G$-$k$b$N$J$N$G$7$g$&$+!)e(B

e$BF1$8$h$&$K5-=R$G$-$k$H$$$&$N$O$I$&$$$&0UL#$G$7$g$&$+!#e(B
e$B>/$J$/$H$bNc$K$"$,$C$?;0$D$O$=$l$>$l$K%;%^%s%F%#%/%9$,0[$J$j$^$9!#e(B
(e$B$=$b$=$b$^$s$J$+$NNc$ODj5A$G$O$"$j$^$;$s!#e(B)

U.Nakamura wrote:

e$B$H$J$i$J$$$H$$$1$J$$$N$G!"$I$&$7$h$&$b$J$$$N$G$9!#e(B

e$B;d$O!">e5-$N5-K!$,M-8z$+$I$&$+$re(Bconfiguree$B$G%A%’%C%/$9$l$P$$$$$N$G$O$J$$$+$H;W$C$Fe(B
e$B$$$^$9!#$=$N$h$&$JMQES$N$?$a$Ne(BFUNC_CDECL/STDCALLe$B$G$O$J$$$H$$$&$N$G$"$l$P!“5U$Ke(Bdle$BB&e(B
e$B$G$O!”$=$l$i$N%^%/%m$r0l@Z;H$o$J$$J}8~$r9M$($F$bNI$5$=$&$@$H8=;~E@$G$O;W$C$F$$$^$9!#e(B

e$B$&$^$/$O=q$1$J$$$N$G$9$,!“e(BFUNC_CDECLe$B$O!”=c?h$Ke(B__attribute__e$B$GM-8z$JB0@-$@$1$r%A%’%C%/e(B
e$B$9$k$3$H$,L\E*$J$N$+!"$=$l$H$b!"%W%m%H%?%$%W@k8@e(B(e$B$^$?$O4X?tDj5A$J$Ie(B)e$B$GM-8z$J5-K!$re(B
e$B%A%’%C%/$9$k$3$H$,L\E*$J$N$+$H$$$&$3$H$r9M$($k$H!"$I$A$i$G$7$g$&!)e(B
e$B$J$s$H$J$/<BAu$@$1$_$k$HA0<T$N$h$&$G$9$,!"$=$l$O;H$$>!<j$,NI$$$+$H8@$&$He(B(e$B>/$J$/$H$be(Bdl
e$B$N<BAu$K$H$C$F$Oe(B)e$B$=$&$G$b$J$$$h$&$K;W$$$^$9!#e(B(e$B8@MUB-$i$:$G?=$7Lu$"$j$^$;$s!#e(B)

Takaaki T. wrote:

e$B$H$$$&e(B3e$B$D$NDj5A$O>o$K$[$\F1$8$h$&$K5-=R$G$-$k$b$N$J$N$G$7$g$&$+!)e(B

e$BF1$8$h$&$K5-=R$G$-$k$H$$$&$N$O$I$&$$$&0UL#$G$7$g$&$+!#e(B
e$B>/$J$/$H$bNc$K$"$,$C$?;0$D$O$=$l$>$l$K%;%^%s%F%#%/%9$,0[$J$j$^$9!#e(B

e$B@bL@ITB-$G?=$7Lu$"$j$^$;$s!#$H$O$$$(!“85$NLdBj$H4XO”$7$F!“E,@Z$JJ8>Oe(B(e$BMQ8le(B)
e$B$,$9$0$K$O$G$F$-$^$;$s!#$=$N$?$a!”$7$P$i$/BT$C$FD:$$$F$b59$7$$$G$7$g$&$+!)e(B

e$B5-21$b$?$0$j!">/$79M$($?$N$G$9$,!"0J2<$N<ALd$KD{@5$7$^$9!#e(B

e$B8=>u$NG’<1!‘e(B
FUNC_CDECL(e$B0J9_$G$Oe(BFUNC_STDCALLe$B$b4^$`e(B)e$B$O!"e(B__attribute__
e$B$,<h$j$($kB0@-$N%A%’%C%/e(B
e$B$H!“$=$NM-8z$J5-K!$r%A%‘%C%/$9$k$?$a$N$b$N$G$9!#$7$+$7!“e(Bconfiguree$BCf$G$O!”%W%m%He(B
e$B%?%$%W@k8@$KBP$9$k%A%’%C%/$7$+9T$C$F$$$^$;$s!#e(B
e$B0JA0$K!“4XO”$9$k<ALd$r$7$?$3$H$,$”$j!"$=$N$H$-<!$N$h$&$J2sEz$rF@$^$7$?!#e(B
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/27400
e$B$3$l$+$iH=CG$9$k$H!"4X?tDj5A$dJQ?t$N@k8@;~$K$b;H$($k$h$&$KG[N8$5$l$F$$$k$N$@$m$&$He(B
e$B;W$C$F$7$^$C$F$$$^$7$?!#e(B
(e$B:#FI$JV$7$F$$k$HJQ?t@k8@$K$D$$$F$O8@5Z$5$l$F$$$^$;$s$G$7$?!#e(B)

e$B5?Ld!'e(B
dl2(ruby-1.9e$B$Ne(Bdl)e$B$G$O!"4X?t$NDj5A$H!"JQ?t$N@k8@$K$$$$F$be(B
attribute (e$B%3%se(B
e$B%Q%$%i$K$h$C$F$Oe(B __cdecl) e$B$r;H$C$F$
$j!"8=:_!“e(BFUNC_CDECL
e$B$rMxMQ$G$-$J$$$m$&$+$He(B
e$B9M$($F$$$^$9!#$3$N$?$a$K$O!”%W%m%H%?%$%W@k8@!"4X?tDj5A!“JQ?t@k8@$N$I$l$G$bM-8ze(B
e$B$J$h$&$Ke(Bstdcall/cdecle$B$r6hJL$9$k$h$&$J6&DL$N%^%/%m$rDj5A$9$kI,MW$,$”$j$^$9$,!"e(B
e$B$3$l$O2DG=$G$7$g$&$+!)e(B
e$B2DG=$G$J$$>l9g!“e(Bconfiguree$BCf$G!”$=$l$>$le(B3e$B$D$NMQES8~$1$K8DJL$K%^%/%m$rDj5A$9$k$He(B
e$B$$$&Ds0F$O<u$1F~$l$i$l$k$G$7$g$&$+!)e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28950] Re: FUNC_CDECL/FUNC_STDCALL are not
defined?”
on Jul.04,2006 01:21:32, [email protected] wrote:
| e$B;d$O!“>e5-$N5-K!$,M-8z$+$I$&$+$re(Bconfiguree$B$G%A%'%C%/$9$l$P$$$$$N$G$O$J$$$+$H;W$C$Fe(B
| e$B$$$^$9!#$=$N$h$&$JMQES$N$?$a$Ne(BFUNC_CDECL/STDCALLe$B$G$O$J$$$H$$$&$N$G$”$l$P!“5U$Ke(Bdle$BB&e(B
| e$B$G$O!”$=$l$i$N%^%/%m$r0l@Z;H$o$J$$J}8~$r9M$($F$bNI$5$=$&$@$H8=;~E@$G$O;W$C$F$$$^$9!#e(B

e$B$J$s$+;d$,8mFI$7$F$=$&$J$N$G3NG’$J$N$G$9$,!"e(BFUNC_CDECL/STDCALL
e$B$,;H$($J$$%W%i%C%H%U%)!<%`$G$I$&$J$k$Y$-$@$H$*9M$($G$9$+e(B?

FUNC_CDECL/STDCALLe$B$r<4$K$6$C$HJ,N`$9$k$H!"e(B

(1)
FUNC_CDECL/STDCALLe$B$Ge(Bcdecle$B!"e(Bstdcalle$B$J4X?tDj5A$,2DG=$J%W%ie(B
e$B%C%H%U%)!<%e(B(e$BNce(B:i386e$B>e$Ge(Bgcce$BMxMQ$N%W%i%C%H%U%)!<%e(B)
(2)
FUNC_CDECL/STDCALLe$B$O;H$($J$$$,!"e(Bcdecle$B!"e(Bstdcalle$B$J4X?tDj5Ae(B
e$B$,2DG=$J%W%i%C%H%U%)!<%e(B(e$BNce(B:VC++) (3) cdecle$B!"e(Bstdcalle$B$J4X?tDj5A$N$J$$%W%i%C%H%U%)!<%e(B

e$B$,$“$k$H$$$&$3$H$K$J$j$^$9$,!”$=$l$>$l$Ge(Bdle$B$O$I$&$9$k$D$b$j$Je(B
e$B$N$+$,CN$j$?$$$G$9!#e(B

| e$B$&$^$/$O=q$1$J$$$N$G$9$,!“e(BFUNC_CDECLe$B$O!”=c?h$Ke(B__attribute__e$B$GM-8z$JB0@-$@$1$r%A%‘%C%/e(B
| e$B$9$k$3$H$,L\E*$J$N$+!“$=$l$H$b!”%W%m%H%?%$%W@k8@e(B(e$B$^$?$O4X?tDj5A$J$Ie(B)e$B$GM-8z$J5-K!$re(B
| e$B%A%’%C%/$9$k$3$H$,L\E*$J$N$+$H$$$&$3$H$r9M$($k$H!“$I$A$i$G$7$g$&!)e(B
| e$B$J$s$H$J$/<BAu$@$1$_$k$HA0<T$N$h$&$G$9$,!”$=$l$O;H$$>!<j$,NI$$$+$H8@$&$He(B(e$B>/$J$/$H$be(Bdl
| e$B$N<BAu$K$H$C$F$Oe(B)e$B$=$&$G$b$J$$$h$&$K;W$$$^$9!#e(B(e$B8@MUB-$i$:$G?=$7Lu$"$j$^$;$s!#e(B)

e$B$3$C$A$Oe(Bconfiguree$BC4Ev$N?M$Ke(B…(e$BCfED$5$se(B?

e$B$=$l$G$O!#e(B

U.Nakamura wrote:

e$B$J$s$+;d$,8mFI$7$F$=$&$J$N$G3NG’$J$N$G$9$,!"e(BFUNC_CDECL/STDCALL
e$B$,;H$($J$$%W%i%C%H%U%)!<%$G$I$&$J$k$Y$-$@$H$*9M$($G$9$+e(B? FUNC_CDECL/STDCALLe$B$r<4$K$6$C$HJ,N$9$k$H!"e(B

(1) FUNC_CDECL/STDCALLe$B$Ge(Bcdecle$B!"e(Bstdcalle$B$J4X?tDj5A$,2DG=$J%W%ie(B
e$B%C%H%U%)!<%e(B(e$BNce(B:i386e$B>e$Ge(Bgcce$BMxMQ$N%W%i%C%H%U%)!<%e(B)

dle$B$N%3!<%IFb$G$O!"e(B__attribute__ e$B$de(B __declspec
e$B$r;H$o$J$$$h$&$K$7$?$$$G$9!#e(B

(2) FUNC_CDECL/STDCALLe$B$O;H$($J$$$,!"e(Bcdecle$B!"e(Bstdcalle$B$J4X?tDj5Ae(B
e$B$,2DG=$J%W%i%C%H%U%)!<%`e(B(e$BNce(B:VC++)

FUNC_CDECLe$B$rDj5A$7$FM_$7$$$H;W$C$F$$$^$9!#$7$+$7!";d$O$3$N<~JU$N;v>pe(B
e$B$rNI$/CN$i$J$$$N$G$9$,!"$=$b$=$b<+F0$GDj5A$9$k$3$H$,Fq$7$$$N$G$7$g$&$+!)e(B

(3) cdecle$B!"e(Bstdcalle$B$J4X?tDj5A$N$J$$%W%i%C%H%U%)!<%`e(B

e$B$3$l$O9M$($F$^$;$s$G$7$?!#e(B

U.Nakamura wrote:

e$B$J$N$G$9!#e(B
e$B$J$<$+$h$&$d$/:#$K$J$C$F;d$N4V0c$$$,M}2r$G$-$^$7$?!#$"$j$,$H$&$4$6$$$^$7$?!#e(B

DECL_FUNC_CDECL(e$B;d$N%Q%C%A$NNc$N$G$b85!9e(Bcfunc.ce$B$K$"$C$?$b$N$Ge(B
e$B$be(B)e$B$N$h$&$K!“La$jCM$H$=$NB>$NItJ,$rJ,N%$7$?0z?t$H$7$FEO$9%^%/e(B
e$B%m$G$”$l$PDj5A2DG=$G$9$N$G!“B>$N%W%i%C%H%U%)!<%`$H9g$o$;$F$=e(B
e$B$&$$$&$b$N$rMQ0U$7$m$H$$$&OC$G$”$l$P!"$b$A$m$se(Bmswin32e$B$K$D$$$Fe(B
e$B$O:n6H$7$^$9!#e(B

e$B$3$l$,@5<0$K:NMQ$5$l$k$J$i!"$=$&$7$F$b$i$($k$H;d$O4r$7$$$G$9!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28953] Re: FUNC_CDECL/FUNC_STDCALL are not
defined?”
on Jul.04,2006 19:13:55, [email protected] wrote:
| > (2) FUNC_CDECL/STDCALLe$B$O;H$($J$$$,!“e(Bcdecle$B!“e(Bstdcalle$B$J4X?tDj5Ae(B
| > e$B$,2DG=$J%W%i%C%H%U%)!<%`e(B(e$BNce(B:VC++)
|
| FUNC_CDECLe$B$rDj5A$7$FM_$7$$$H;W$C$F$$$^$9!#$7$+$7!”;d$O$3$N<~JU$N;v>pe(B
| e$B$rNI$/CN$i$J$$$N$G$9$,!”$=$b$=$b<+F0$GDj5A$9$k$3$H$,Fq$7$$$N$G$7$g$&$+!)e(B

e$B$$$d!"<+F0$H$+$$$&LdBj$G$O$J$/!"e(B[ruby-dev:28946]e$B$K=q$$$?$H$*e(B
e$B$j!“0z?t$,0l$D$H$$$&>r7o$G$O%^%/%m$H$7$FDj5A$9$k$3$H$OIT2DG=e(B
e$B$J$N$G$9!#e(B
e$BDj5A$9$k$3$H$,IT2DG=$J$N$GDj5A$7$F$$$J$$!”$H$$$&$=$l$@$1$NM}e(B
e$BM3$G$9!#e(B

DECL_FUNC_CDECL(e$B;d$N%Q%C%A$NNc$N$G$b85!9e(Bcfunc.ce$B$K$“$C$?$b$N$Ge(B
e$B$be(B)e$B$N$h$&$K!“La$jCM$H$=$NB>$NItJ,$rJ,N%$7$?0z?t$H$7$FEO$9%^%/e(B
e$B%m$G$”$l$PDj5A2DG=$G$9$N$G!“B>$N%W%i%C%H%U%)!<%`$H9g$o$;$F$=e(B
e$B$&$$$&$b$N$rMQ0U$7$m$H$$$&OC$G$”$l$P!”$b$A$m$se(Bmswin32e$B$K$D$$$Fe(B
e$B$O:n6H$7$^$9!#e(B

e$B$=$l$G$O!#e(B

[ruby-dev:28955]e$B$K=q$$$?DL$j!";d$NG’<1$,4V0c$C$F$$$?e(B(e$B;W$$9~$_$,$"$C$?e(B)e$B$N$G$b$&e(B
e$B0lEY8=>u$HDs0F$rD{@5$5$;$F$/$@$5$$!#e(B

e$B8=>u!‘e(B
FUNC_CDECL(e$B0J9_$G$Oe(BFUNC_STDCALLe$B$b4^$`e(B)e$B$O!"e(B__attribute__
e$B$,<h$j$($kB0@-$N%A%’%C%/e(B
e$B$H!"$=$NM-8z$J5-K!$r%A%’%C%/$9$k$?$a$N$b$N$G$9!#e(Bconfiguree$B$G$O%W%m%H%?%$%W@k8@$KBPe(B
e$B$9$k%A%’%C%/$7$+9T$C$F$$$^$;$s!#e(B
e$B$^$?!“4X?t$N8F$S=P$75,B’e(Bcdecl/stdcalle$B$r;XDj$9$k%-!<%o!<%I$N0LCV$,!”%W%m%H%?%$%W@ke(B
e$B8@$NA0$+8e$m$G$"$k$3$H$,A0Ds$H$J$C$FDj5A$5$l$F$*$j!“e(B
int __stdcall foo(…);
e$B$N$h$&$K!”%W%m%H%?%$%W@k8@$NCf$K8=$l$J$1$l$P$J$i$J$$>l9g$r07$($^$;$s!#e(B
e$B$3$N$?$a!"e(BFUNC_CDECLe$B$J$I$N%^%/%m$,e(BVCe$B$K$OMQ0U$G$-$J$$$G$$$^$9!#e(B

dl2(ruby-1.9e$B$Ne(Bdl)e$B$G$O!“4X?t$NDj5A$H!“JQ?t$N@k8@$K$$$$F!"4X?t$N8F$S=P$75,B’$r;XDje(B
e$B$9$k%-!<%o!<%I$r;H$C$F$
$j!”<!$NDL$j$K%^%/%m$,Dj5A$5$l!”$=$l$rMxMQ$7$F$$$^$9!#e(B

  • config.he$B$K$*$1$ke(BFUNC_CDECLe$B$N%^%/%mDj5A!'e(B
    gcce$B$N>l9ge(B(e$BNce(B)e$B!'e(B

    • #define FUNC_CDECL(x) attribute ((cdecl))
      VCe$B$N>l9g!'e(B
    • FUNC_CDECL(x)e$B$ODj5A$5$l$J$$!#e(B
  • dle$B$K$*$1$kJQ?t@k8@$G$NMxMQe(B
    DECL_FUNC_CDECL(f,int,DLSTACK_PROTO##n) = cfunc->ptr;
    (DLSTACK_PROTO##ne$B$O!"4X?t$N0z?tItJ,$N7?$G!“e(B"int,int,int”
    e$B$J$I$G$9!#e(B)
    e$B$3$3$G!"e(BDECL_FUNC_CDECLe$B$O<!$NDL$j$KDj5A$7$F$$$^$9!#e(B
    gcce$B$N>l9g$N%^%/%mDj5Ae(B:

    • #define DECL_FUNC_CDECL(f,ret,args) FUNC_CDECL(ret (*f)(args))
      FUNC_CDECLe$B$HF1$8%-!<%o!<%I$N0LCV$G@k8@$G$-$ke(B
      VCe$B$N>l9g$N%^%/%mDj5Ae(B:
    • #define DECL_FUNC_CDECL(f,ret,args) ret (__cdecl *f)(args)
      dle$BFb$GDj5Ae(B
  • e$B4X?tDj5A$G$NMxMQe(B
    FUNC_CDECL(static void rb_dl_callback_void_0_0_cdecl()) {…}
    –> e$B$7$+$7!"$3$l$G$Oe(B static void __cdecl
    rb_dl_callback_void_0_0_cdecl(){…}
    e$B$H$$$&4X?tDj5A$r07$($^$;$s!#e(B
    #define FUNC_CDECL(x,y) x __cdecl y ----- (e$BCme(B1)
    e$B$HDj5A$7$F!“e(B
    FUNC_CDECL(static void, rb_dl_callback_void_0_0_cdecl()) {…}
    e$B$H$7$FMxMQ$9$kI,MW$,$”$j$^$9!#e(B

e$BDs0F!‘e(B
1.
FUNC_CDECLe$B$O!"%W%m%H%?%$%W@k8@$K$*$1$k8F$S=P$75,B’$r;XDj$9$k%-!<%o!<%I$Ne(B
e$B0LCV$rD4$Y$k$?$a$N$b$N$J$i$P!">e5-e(B(e$BCme(B1)e$B$N$h$&$KJ#?t$N0z?t$r;}$D%^%/%m$,e(B
e$BI,MW$@$H$7$F$b!"e(BVCe$B$XBP1~$5$;$FM_$7$$$G$9!#e(B

FUNC_CDECLe$B$O!"%W%m%H%?%$%W@k8@$N$[$+$K$b!"4X?tDj5A$dJQ?t@k8@$N>l9g$K$bMxMQe(B
e$B$5$l$k$3$H$rA[Dj$7$FDj5A$5$l$F$$$k$N$G$7$g$&$+!)$=$&$G$J$$$J$i!"4X?t@k8@$de(B
e$BJQ?t@k8@$K$bMxMQ$G$-$k%^%/%m$,M_$7$$$G$9!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28956] Re: FUNC_CDECL/FUNC_STDCALL are not
defined?”
on Jul.04,2006 20:49:13, [email protected] wrote:
| e$BDs0F!‘e(B
| 1. FUNC_CDECLe$B$O!"%W%m%H%?%$%W@k8@$K$*$1$k8F$S=P$75,B’$r;XDj$9$k%-!<%o!<%I$Ne(B
| e$B0LCV$rD4$Y$k$?$a$N$b$N$J$i$P!">e5-e(B(e$BCme(B1)e$B$N$h$&$KJ#?t$N0z?t$r;}$D%^%/%m$,e(B
| e$BI,MW$@$H$7$F$b!“e(BVCe$B$XBP1~$5$;$FM_$7$$$G$9!#e(B
|
| 2. FUNC_CDECLe$B$O!”%W%m%H%?%$%W@k8@$N$[$+$K$b!"4X?tDj5A$dJQ?t@k8@$N>l9g$K$bMxMQe(B
| e$B$5$l$k$3$H$rA[Dj$7$FDj5A$5$l$F$$$k$N$G$7$g$&$+!)$=$&$G$J$$$J$i!"4X?t@k8@$de(B
| e$BJQ?t@k8@$K$bMxMQ$G$-$k%^%/%m$,M_$7$$$G$9!#e(B

e$B%3%s%Q%$%k$,DL$i$J$$$^$^F|?t$@$1$,7P2a$7$F$$$/$N$G!"e(BIRCe$B$GAjCLe(B
e$B$7$D$DBP:v$r9M$($^$7$?e(B(e$B$H$$$&$+9M$($F$b$i$$$^$7$?e(B)e$B!#e(B

  1. e$B$K$D$$$F$O!"e(BFUNC_CDECLe$B$re(Bmswin32e$B$G$bDj5A$7$^$9!#e(B
  2. e$B$K$D$$$F$O!"e(B
    (a) e$B%W%m%H%?%$%W@k8@e(B
    e$BLa$jCMe(B FUNC_CDECL(e$B4X?tL>e(B)(e$B0z?te(B);
    (b) e$B4X?tDj5Ae(B
    e$BLa$jCMe(B FUNC_CDECL(e$B4X?tL>e(B)(e$B0z?te(B) {…}
    (c) e$BJQ?tDj5Ae(B/e$B@k8@e(B
    e$BLa$jCMe(B (FUNC_CDECL(e$B4X?tL>e(B))(e$B0z?te(B);
    e$BLa$jCMe(B (FUNC_CDECL(e$B4X?tL>e(B))(e$B0z?te(B) =
    e$B$J$s$H$+e(B;
    e$B$H$7$Fe(BFUNC_CDECLe$B$rMxMQ$9$k$3$H$rDs0F$7$^$9!#e(B
    e$B$3$&;H$&$3$H$K$h$C$F!"4{CN$N%W%i%C%H%U%)!<%`$K$
    $$$F$O!"%W%me(B
    e$B%H%?%$%W@k8@!"4X?tDj5A!"JQ?tDj5Ae(B/e$B@k8@$N$$$:$l$K$
    $$$F$be(BFUNC_CDECL
    e$B$rMxMQ2DG=$J$O$:$G$9!#e(B

configuree$B$K$h$k$H!"e(B
#define FUNC_CDECL(x) x attribute ((cdecl))
e$B$H$J$k%W%i%C%H%U%)!<%`$,B8:$9$k2DG=@-$b$“$k$N$G$9$,!”<B:$9e(B
e$B$k$+$I$&$+$o$+$i$J$$$N$G9MN8$7$F$$$^$;$s!#e(B

Index: win32/Makefile.sub

RCS file: /home/cvs/ruby/win32/Makefile.sub,v
retrieving revision 1.112
diff -u -1 -p -r1.112 Makefile.sub
— win32/Makefile.sub 25 May 2006 23:43:30 -0000 1.112
+++ win32/Makefile.sub 6 Jul 2006 07:05:07 -0000
@@ -258,2 +258,4 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/
!endif
+#define FUNC_STDCALL(x) __stdcall x
+#define FUNC_CDECL(x) __cdecl x
#define RUBY_EXTERN extern __declspec(dllimport)
Index: ext/dl/mkcallback.rb

RCS file: /home/cvs/ruby/ext/dl/mkcallback.rb,v
retrieving revision 1.10
diff -u -1 -p -r1.10 mkcallback.rb
— ext/dl/mkcallback.rb 30 Jun 2006 18:05:34 -0000 1.10
+++ ext/dl/mkcallback.rb 6 Jul 2006 07:05:07 -0000
@@ -113,4 +113,4 @@ for calltype in CALLTYPES

-FUNC_#{calltype.upcase}(static #{DLTYPE[ty][:type]}
-#{func_name(ty,argc,n,calltype)}(#{(0…argc).collect{|i| “DLSTACK_TYPE
stack” + i.to_s}.join(", “)}))
+static #{DLTYPE[ty][:type]}
+FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0…argc).collect{|i|
“DLSTACK_TYPE stack” + i.to_s}.join(”, ")})
{

from 61.213.77.153
e$B$=$l$G$O!#e(B

In article [email protected],
Takaaki T. [email protected] writes:

(3) cdecle$B!"e(Bstdcalle$B$J4X?tDj5A$N$J$$%W%i%C%H%U%)!<%`e(B

e$B$3$l$O9M$($F$^$;$s$G$7$?!#e(B

e$B$3$l$C$F!“e(Bx86 e$B0J30$O9M$($F$$$J$+$C$?!”$H$$$&$3$H$G$7$g$&$+e(B?

U.Nakamura wrote:

  e$BLa$jCMe(B (FUNC_CDECL(*e$B4X?tL>e(B))(e$B0z?te(B) = e$B$J$s$H$+e(B;

e$B$H$7$Fe(BFUNC_CDECLe$B$rMxMQ$9$k$3$H$rDs0F$7$^$9!#e(B
e$B$3$&;H$&$3$H$K$h$C$F!"4{CN$N%W%i%C%H%U%)!<%`$K$$$$F$O!"%W%me(B
e$B%H%?%$%W@k8@!"4X?tDj5A!"JQ?tDj5Ae(B/e$B@k8@$N$$$:$l$K$
$$$F$be(BFUNC_CDECL
e$B$rMxMQ2DG=$J$O$:$G$9!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#e(B
e$B;d$O$3$l$G==J,$G$9$N$G!"$R$H$^$:!“e(Bdle$BB&$O$3$l$K9g$o$;$F=$@5$7$h$&$H;W$$$^$9!#e(B
(b),©e$B$,e(BFUNC_CDECLe$B$G07$($J$$%3%s%Q%$%i$,$G$F$-$?$i!”$^$?$=$N;~9M$($h$&$H;We(B
e$B$$$^$9!#e(B

e$B$H$3$m$G!"e(B[ruby-dev:28943]e$B$K$*$1$ke(BNetBSD(gcce$B$N%P!<%8%g%se(B)e$B$NLdBj$O2r7h$7$?e(B
e$B$G$7$g$&$+!)e(B

Tanaka A. wrote:

(3) cdecle$B!"e(Bstdcalle$B$J4X?tDj5A$N$J$$%W%i%C%H%U%)!<%`e(B
e$B$3$l$O9M$($F$^$;$s$G$7$?!#e(B

e$B$3$l$C$F!“e(Bx86 e$B0J30$O9M$($F$$$J$+$C$?!”$H$$$&$3$H$G$7$g$&$+e(B?

e$B;d$,;n$;$k4D6-$,e(Bx86e$B0J30$K$J$$e(B(e$B$7$+$b%3%s%Q%$%i$be(Bgcce$B$@$1e(B)e$B$N$G!"7k2LE*$Ke(Bx86e$B$@$1$K$J$C$Fe(B
e$B$7$^$C$F$$$k$@$1$G$9!#B>$N%W%i%C%H%U%)!<%`$G$N>pJs$rD:$1$l$P!"BP1~$7$F$$$-$^$9!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:28974] Re: FUNC_CDECL/FUNC_STDCALL are not
defined?”
on Jul.07,2006 03:52:13, [email protected] wrote:
| e$B$H$3$m$G!"e(B[ruby-dev:28943]e$B$K$*$1$ke(BNetBSD(gcce$B$N%P!<%8%g%se(B)e$B$NLdBj$O2r7h$7$?e(B
| e$B$G$7$g$&$+!)e(B

e$B$“!”$3$l$Oe(Bconfiguree$B$N%-%c%C%7%e$,0-$5$7$F$^$7$?!#e(B
e$B$*A{$,$;$7$^$7$?!#e(B

e$B$=$l$G$O!#e(B