【发布时间】:2013-12-21 15:57:52
【问题描述】:
我正在构建一个新包:
- 包名包含一个点:例如my.package
- 包导出一个Rcpp函数:例如rcppfunction
当我使用Rcmd INSTALL构建包时,在后台使用compileAttributes自动生成导出函数,
RcppExport SEXP my.package_rcppfunction(...)
由于导出名称中的点而导致编译错误:
RcppExports.cpp:10:19: error: expected initializer before '.' token
作为一种解决方法,我可以更改包名称以从中删除点,但我想要更好的解决方案并了解符号的导出方式。所以我的问题是:
- 例如,我如何参数化生成的代码以将点替换为“_”(可能通过为导出属性提供一些参数)。
- 或如何更改 g++ 调用以强制其编译此类带点符号..
我不知道这是否有帮助,但这里是我的 g++ 调用:
g++ -m32 -I"PATH_TO_R/R-30~1.2/include" -DNDEBUG -
I"PATH_To_R/3.0/Rcpp/include" -
I"d:/RCompile/CRANpkg/extralibs64/local/include"
-O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
【问题讨论】: