Я предполагаю, что это простой вопрос, но я новичок в Cpp и застрял.Функция rcpp вызывает другую функцию rcpp
Я создал функцию в R, используя Rcpp и:
// [[Rcpp::export]]
Я могу вызвать функцию в R, и она работает, как предполагалось. Назовем это F1
.
Далее, я хочу создать другую функцию, F2
, используя Rcpp
, которая вызывает первую функцию. Я использую стандартный язык вызова функции (то есть, F1(arguments))
, и он отлично компилируется через R, когда я использую sourceCpp()
Но когда я пытаюсь вызвать F2
в R, я получаю:.
Ошибка в .Primitive (".call") (
и
F2 отсутствует
Первый .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;
}
Это неясно. Пожалуйста, покажите код, который вы пытаетесь использовать. –
Спасибо. Я понимаю, что вы пытаетесь сделать сейчас. –
Спасибо за обмен кода. То, что вы здесь делаете, не будет работать на простом C++, либо у второго файла C++ нет объявления F1. Как правило, в заголовке должны быть общие объявления. То, что Ромен показал в своем ответе, работает, но должно считаться взломом. Узнайте о проектах с несколькими файлами на C++. Или держите вещи в одном файле. –