--047d7b5d398e56ad7b04e16fcfc1
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

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>

> はじめまして、植木です。
>
> Rubyから呼ぶべき関数がC++のライブラリなので、いろいろ調べたところ extconf.rbで
>
> require 'mkmf'
> $LIBS << " -lstdc++ -lc"
> $CC "g++"
> $CXX $CC
>
> などとやると、一応g++でコンパイルしてくれるようになりました
> (これが正しい対はやや疑問ですえ造臓
>
> しかし、makeすると
>
> error: invalid conversion from 'VALUE (*)(VALUE)' to 'VALUE (*)(...)'
>
> となってしまいます。該当箇
鰲焙繙蜴縷迴糒跂煕釿蜿遖輳逅‰闕縷胚釿↑ 囂辣煕釿 逢という行です。Some_funcの定義は
>
>
> static VALUE Some_func(VALUE obj)
> {
>   .....
>
> のようなかんじです。Cであれば問題ない記世隼廚Δ里任垢、どうすればいいでしょうか;
鴣磔は1.8.5です。
>
> 以上よろしくお願いします。
>
>


-- 
Yuki Sonoda (Yugui)
yugui / yugui.jp
http://yugui.jp

--047d7b5d398e56ad7b04e16fcfc1
Content-Type: text/html; charset=ISO-2022-JP
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+QysrGyRCJEckTyQzJE5KVSRqJE43PyVBJSclQyUvJCwbKEJDGyRCJGgk
aiRiJC0kRCQkJE4kR0xAPChFKiRLJS0lYyU5JUgkNyRGJGQkaSRNJFAkSiRqJF4kOyRzISMbKEI8
ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxzYW5zLXNl
cmlmO2ZvbnQtc2l6ZToxM3B4Ij5yYl9kZWZpbmVfbW9kdWxlX2Z1bmN0aW9uKDwvc3Bhbj48c3Bh
biBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTNweCI+bVRt
cCwgJnF1b3Q7c29tZV9mdW5jJnF1b3Q7LCByZWludGVycHJldF9jYXN0Jmx0O1ZBTFVFKCopKC4u
LikmZ3Q7KFNvbWVfZnVuYyksIDApOzwvc3Bhbj48YnIgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFs
LHNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcHgiPg0KPC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTNweCI+PGJyPjwvc3Bhbj48L2Rp
dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6
ZToxM3B4Ij4bJEIkSCQ3JEYkLyRAJDUkJCEjGyhCPC9zcGFuPjwvZGl2PjxkaXY+PGJyPjwvZGl2
PjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48YnI+PGJyPg0KPGRpdiBjbGFzcz0iZ21h
aWxfcXVvdGUiPjIwMTMvNy8xMSBVZWtpLEhpa29udWtpIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEg
aHJlZj0ibWFpbHRvOnVla2kuaGlrb251a2lAamNvbS5ob21lLm5lLmpwIiB0YXJnZXQ9Il9ibGFu
ayI+dWVraS5oaWtvbnVraUBqY29tLmhvbWUubmUuanA8L2E+Jmd0Ozwvc3Bhbj48YnI+PGJsb2Nr
cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVy
LWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+DQobJEIkTyQ4JGEkXiQ3JEYh
Ij8iTFokRyQ5ISMbKEI8YnI+DQo8YnI+DQpSdWJ5GyRCJCskaThGJFYkWSQtNFg/dCQsGyhCQysr
GyRCJE4laSUkJVYlaSVqJEokTiRHISIkJCRtJCQkbUQ0JFkkPyRIJDMkbRsoQiBleHRjb25mLnJi
GyRCJEcbKEI8YnI+DQo8YnI+DQpyZXF1aXJlICYjMzk7bWttZiYjMzk7PGJyPg0KJExJQlMgJmx0
OyZsdDsgJnF1b3Q7IC1sc3RkYysrIC1sYyZxdW90Ozxicj4NCiRDQyA9PSAmcXVvdDtnKysmcXVv
dDs8YnI+DQokQ1hYID09ICRDQzxicj4NCjxicj4NChskQiRKJEkkSCRkJGskSCEiMGwxfhsoQmcr
KxskQiRHJTMlcyVRJSQlayQ3JEYkLyRsJGskaCQmJEskSiRqJF4kNyQ/GyhCPGJyPg0KKBskQiQz
JGwkLEA1JDckJEJQPWgkKyRPJGQkZDU/TGQkRyQ5JCwbKEIpGyRCISMbKEI8YnI+DQo8YnI+DQob
JEIkNyQrJDchIhsoQm1ha2UbJEIkOSRrJEgbKEI8YnI+DQo8YnI+DQplcnJvcjogaW52YWxpZCBj
b252ZXJzaW9uIGZyb20gJiMzOTtWQUxVRSAoKikoVkFMVUUpJiMzOTsgdG8gJiMzOTtWQUxVRSAo
KikoLi4uKSYjMzk7PGJyPg0KPGJyPg0KGyRCJEgkSiRDJEYkNyReJCQkXiQ5ISMzOkV2MlU9aiRP
GyhCPGJyPg0KPGJyPg0KcmJfZGVmaW5lX21vZHVsZV9mdW5jdGlvbihtVG1wLCAmcXVvdDtzb21l
X2Z1bmMmcXVvdDssIFNvbWVfZnVuYywgMCk7PGJyPg0KPGJyPg0KGyRCJEgkJCQmOVQkRyQ5ISMb
KEJTb21lX2Z1bmMbJEIkTkRqNUEkTxsoQjxicj4NCjxicj4NCjxicj4NCnN0YXRpYyBWQUxVRSBT
b21lX2Z1bmMoVkFMVUUgb2JqKTxicj4NCns8YnI+DQombmJzcDsgLi4uLi48YnI+DQo8YnI+DQob
JEIkTiRoJCYkSiQrJHMkOCRHJDkhIxsoQkMbJEIkRyQiJGwkUExkQmokSiQkNS09UiRAJEg7VyQm
JE4kRyQ5JCwhIiRJJCYkOSRsJFAkJCQkJEckNyRnJCYkKyEpGyhCPGJyPg0KPGJyPg0KcnVieRsk
QiRPGyhCMS44LjUbJEIkRyQ5ISMbKEI8YnI+DQo8YnI+DQobJEIwSj5lJGgkbSQ3JC8kKjRqJCQk
NyReJDkhIxsoQjxicj4NCjxicj4NCjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PGJyIGNsZWFyPSJh
bGwiPjxkaXY+PGJyPjwvZGl2Pi0tIDxicj5ZdWtpIFNvbm9kYSAoWXVndWkpPGJyPjxhIGhyZWY9
Im1haWx0bzp5dWd1aUB5dWd1aS5qcCI+eXVndWlAeXVndWkuanA8L2E+PGJyPjxhIGhyZWY9Imh0
dHA6Ly95dWd1aS5qcCI+aHR0cDovL3l1Z3VpLmpwPC9hPg0KPC9kaXY+DQo--047d7b5d398e56ad7b04e16fcfc1--