问题描述
我正在尝试将r代码集成到Java中,并想在r代码中使用c ++代码,但是出现以下错误。
“ org.renjin.eval.EvalException:无法解析本机方法 包“ Rcpp”中的“ sourceCppContext””
在运行我的Java代码时。
我的Java代码片段:
r.eval(String.format("source(\"" + appdir + "/config/MyRscript.R\")"));
String rS = ((SEXP)r.eval("test("+i+")")).toString();
R代码:
library(Rcpp)
sourceCpp("Rfunction.cpp")
test <- function(a) {
x <<- timesTwo(a)
print(x)
}
C ++代码:
#include <Rcpp.h>
using namespace Rcpp;
int timesTwo(int x) {
return x * 2;
}
解决方法
Renjin不支持,并且可能无法合理地支持sourceCpp()。您需要将C ++代码移动到可以在构建时将其编译为JVM字节码的程序包中,或者用R或Java重写。