【发布时间】:2016-03-07 01:26:32
【问题描述】:
我正在尝试使用 Visual Studio 构建一个简单的 R 包,这是我的代码:
#include <R.h>
#include <Rinternals.h>
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 目录。我错过了什么?
谢谢!
【问题讨论】:
-
我认为 R 的标准二进制安装没有您需要的文件。我知道 *nix 用户需要安装一组扩展的文件才能获得正确的头文件。
-
请参阅the Windows toolset 上的 R 安装和管理手册部分——基本上,您将很难使用 Visual Studio,而需要使用基于 MinGW 的 Rtools。
-
你能试试原生支持R的VS2015吗?也许这个问题可以在某个时候得到解决?顺便说一句,
.C()可以与 VS 一起使用,例如 here。
标签: c r visual-studio visual-studio-2012 r-package