如何编写R包Makevars实现C函数自动编译及.Call教程咨询
为R包配置Makevars以自动编译.C()调用的C函数
在你的R包src目录下的Makevars文件中,写入以下内容即可实现安装时自动编译:
# 指定头文件搜索路径(如果头文件在当前src目录,可省略,R默认会搜索该目录) PKG_CFLAGS = -I. # 列出所有需要编译的源文件,包含入口函数文件和依赖支持文件 PKG_SOURCES = c_midicsv.c c_csvmidi.c midio.c csv.c
说明:
- R包安装时会自动将所有指定的源文件编译成一个符合包规范的共享库(而非两个独立的
.so文件),包加载后R会自动识别库中的函数,你依然可以通过.C("c_midicsv", ...)和.C("c_csvmidi", ...)直接调用对应函数。 - 无需手动指定输出文件名,R会根据包名自动生成正确的库文件(例如Linux下为
midicsvR.so)。
学习编写.Call()调用的C函数的资源
- R官方《Writing R Extensions》文档:这是权威的官方指南,其中有专门章节讲解原生C与R的交互,覆盖
.Call()的使用、SEXP对象操作、内存管理等核心知识点。 - 《Advanced R》(Hadley Wickham 著):书中的「C/C++」章节详细对比了
.C()与.Call()的差异,通过示例演示如何用.Call()实现更灵活、高效的R-C交互,适合从.C()过渡到.Call()的开发者。
内容的提问来源于stack exchange,提问作者Erich Neuwirth
相关产品推荐
相关产品推荐

