[问题] 制作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