1
我试图包装下面的函数来做C扩展。Ruby C扩展:将int函数转化为ruby值
int dsvd(float **a, int m, int n, float *w, float **v){
//do some things
}
而且我有我的init,这是不完全正确:
void Init_svd() {
VALUE rb_mSvd = rb_define_module("Svd");
rb_define_method(rb_mSvd, "svd", dsvd, 0);
}
我知道我需要包装DSVD,这样我可以通过一个Value
到rb_define_method
但我不能很图走出正确的方式来做到这一点。我试图修改this的答案,但无法弄清楚。有什么建议么?
编辑*我还阅读了关于C扩展的实用程序员部分,但这主要关注对象的创建/分配。我试图提供一个函数来执行一些转换并返回一个值,所以我不能在概念上进行匹配。
所以我会做类似'VALUE rb_svd(VALUE自我,VALUE **一,值m n值,值* W,VALUE ** V){}'或者我应该展开的ARGS? –
太棒了!谢谢,这似乎是要做的伎俩。 –