[問題] 製作R呼叫C function的package

作者: kk741852963 (kk741852963tw)   2017-08-02 23:12:20
[問題類型]:
製作 R package 時出現錯誤
裡面的 R function 會呼叫 C function
[軟體熟悉度]:
學過一些 R 相關的應用, 對 C 語言有基本了解
第一次製作 R package
[問題敘述]
沒有用到外部 package 裡的 C function
/src 底下有
1. chanmat.h
2. 一些 .c 檔以及各自的標頭檔
這些標頭檔都有 #include "chanmat.h"
namespace file 裡已有 useDynLib(test2,chanmat)
在 build & reload 時出現以下錯誤訊息
http://imgur.com/6KNWZyp
小弟已上網 google 過, 但還是沒解決QAQ
希望版上有高手能幫忙解惑
感謝!
[環境敘述]
OS:Windows10 家用版[10.0.14393]
R:3.4.1 (2017-06-30)
作者: celestialgod (天)   2017-08-02 23:24:00
.c檔案沒有function output出去?可能要看一下你的.c檔案怎麼寫有沒有用SEXP
作者: kk741852963 (kk741852963tw)   2017-08-03 00:09:00
我是用 .C() 呼叫 C function 的所以C function 是用 void 寫的http://r-pkgs.had.co.nz/src.html參考這篇http://r-pkgs.had.co.nz/src.html參考這篇http://r-pkgs.had.co.nz/src.html 參考這篇
作者: celestialgod (天)   2017-08-03 00:12:00
所以你有用R_RegisterCCallable 或是useDynLib(test2,chanmat)看了一下Exporting C code那裏感覺要註冊才行如data.table一樣:https://goo.gl/nFpVMB因為我都直接用Rcpp處理,所以只能猜測看看有沒有其他板友能回答你
作者: clickhere (It's time to go home.)   2017-08-03 10:26:00
和export無關.你在R中,用了.C/.Call叫了 chanmat 這個C函數,但它並沒有被編在test2.dll中.你需要有個 .c 的檔案中有 void chanmat(...){...} 之
作者: kk741852963 (kk741852963tw)   2017-08-03 19:17:00
我再試試看,謝謝各位

Links booklink

Contact Us: admin [ a t ] ucptt.com