使用Visual Studio构建R包(C API)

我正在尝试使用Visual Studio构建一个简单的R包,这是我的代码:

#include  #include  SEXP add(SEXP a, SEXP b) { SEXP result = PROTECT(allocVector(REALSXP, 1)); REAL(result)[0] = asReal(a) + asReal(b); UNPROTECT(1); return result; } 

我安装了R运行时和RTools。

当我尝试编译它时,我收到以下链接错误:

 error LNK2019: unresolved external symbol REAL referenced in function "struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)" (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) error LNK2019: unresolved external symbol Rf_asReal referenced in function "struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)" (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) error LNK2019: unresolved external symbol Rf_allocVector referenced in function "struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)" (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) error LNK2019: unresolved external symbol Rf_protect referenced in function "struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)" (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) error LNK2019: unresolved external symbol Rf_unprotect referenced in function "struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)" (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) 

好吧,我想我错过了链接过程所需的一些二进制文件。 问题是我不知道在哪里可以找到必要的.lib文件。 在R运行时安装文件夹中,我可以找到include目录,但是我找不到任何lib目录。 我错过了什么?

谢谢!

请允许我引用Rcpp FAQ小插图:

我可以在Visual Studio中使用Rcpp吗?

不是机会。

这不是因为我们是公司,而是因为R和Visual Studio根本不相处。 由于Rcpp是用C++接口扩展R ,我们受可用工具链的约束。 R只是不能用Visual Studio编译。 如果您仍然不满,请向其供应商投诉。

微软或多或少不顾一切地确保其操作系统和工具不符合POSIX标准。 随着R在Unix / POSIX世界中成长,只是存在一个你无法弥合的差距(很容易)。

所以在Windows上它是gcc的MinGW端口。