程序包名称包含“点”和Rcpp函数时,程序包编译失败

研究

我正在构建一个新程序包:

  • 程序包名称包含一个点:例如my.package
  • 程序包导出一个Rcpp函数:例如rcppfunction

当我使用编译程序包时Rcmd INSTALL该程序compileAttributes被用于幕后自动生成导出的功能,

RcppExport SEXP my.package_rcppfunction(...)

并且由于导出名称中的点而收到编译错误:

RcppExports.cpp:10:19: error: expected initializer before '.' token

作为一种解决方法,我可以更改软件包名称以从中删除点,但是我想要更好的解决方案并了解如何导出符号。所以我的问题是:

  1. 我该如何参数化生成的代码,例如用“ _”代替点(也许通过给export属性提供一些参数)。
  2. 或如何更改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
德克·埃德比布特尔

您不能这样做-C或C ++函数名称中根本不允许使用点:

#include <stdlib.h>

int foo.bar(int x) {
    return(2*x);
}

int main(void) {
    foo.bar(21);
    exit(0);
}

我们得到

edd@max:/tmp$ gcc -c foo.c
foo.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
foo.c: In function ‘main’:
foo.c:9: error: ‘foo’ undeclared (first use in this function)
foo.c:9: error: (Each undeclared identifier is reported only once
foo.c:9: error: for each function it appears in.)
edd@max:/tmp$ 

edd@max:/tmp$ g++ -c foo.c
foo.c:4: error: expected initializer before ‘.’ token
foo.c: In function ‘int main()’:
foo.c:9: error: ‘foo’ was not declared in this scope
edd@max:/tmp$ 

在C ++中,foo.bar()正在调用bar()object的成员函数foo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

rcpp函数导致程序包崩溃

来自分类Dev

程序包名称和类名

来自分类Dev

Maven:编译正常,程序包正常,编译+程序包失败

来自分类Dev

在构建R程序包时从另一个Rcpp函数调用Rcpp函数

来自分类Dev

运行.apk时,Android Studio的程序包名称错误

来自分类Dev

有关程序包名称和接口的问题

来自分类Dev

Chocolatey安装程序包失败

来自分类Dev

相同的程序包名称不同的签名

来自分类Dev

程序包名称“ apzentral / ink”无效

来自分类Dev

NDK从程序包名称获取pid

来自分类Dev

更改程序包名称Bower

来自分类Dev

错误:“ tidyverse”的程序包或名称空间加载失败,没有名为“ reprex”的程序包

来自分类Dev

调试和更改程序包中的R函数

来自分类Dev

部署Shinyapp,程序包时出错

来自分类Dev

执行程序包时出错

来自分类Dev

XLConnect,rJava和程序包构建

来自分类Dev

Azure和SSIS程序包

来自分类Dev

TypeScript:@types程序包名称与实现程序包名称不匹配

来自分类Dev

dyn.load错误,将程序包与Rcpp链接

来自分类Dev

dyn.load错误,将程序包与Rcpp链接

来自分类Dev

通过创建相同的程序包名称来访问程序包访问成员

来自分类Dev

从同一程序包中的R代码调用Rcpp c ++函数

来自分类Dev

使用BroadcastReceiver从LAST INSTALLED应用程序获取程序包名称,通用名称和图标

来自分类Dev

如何导入/调用程序包的“子程序包”?

来自分类Dev

节点程序包与浏览器程序包

来自分类Dev

如何确定GUI程序/元素的程序包名称

来自分类Dev

使用Rcpp构建程序包时处理修饰的外部二进制文件

来自分类Dev

动态加载程序包

来自分类Dev

独立程序包

Related 相关文章

热门标签

归档