使用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端口。