我猜这是一个简单的问题,但我是Cpp新手,卡住了。
我使用Rcpp在R中创建了一个函数:
// [[Rcpp::export]]
我可以在R中调用函数,它按预期工作。我们称其为F1
。
接下来,我想使用Rcpp
创建另一个函数F2
,该函数调用第一个函数。我使用标准的函数调用语言(即F1(arguments))
),当我使用sourceCpp()
时,它可以通过R进行编译。
但是,当我尝试在R中调用F2
时,会出现以下错误:
Error in .Primitive(".Call") (
和
F2 is missing
第一个.cpp
文件包含:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double F1(NumericVector a) {
int n = a.size();
double result=0; // create output vector
double ss = 0;
for(int i = 0; i < n; ++i) {
ss += pow(a[i],2);
}
result = ss;
return result;
}
下面是另一个 .cpp 文件中的内容。
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double F2(NumericVector a) {
double result=0;
result = F1(a);
return result;
}
first.h
,并在第二个 cpp 文件中写入#include "a.h"
以导入第一个文件中的函数。通常,“a.h”声明函数的签名,“a.cpp”实现它。 - Kota Mori