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? –
太棒了!謝謝,這似乎是要做的伎倆。 –