小编Daj*_* Xu的帖子

将Fortran,C++与R集成

我的任务是用C++重写R函数来加速while循环.所有R代码都在Rcpp和Armadillo的帮助下重写,除了.Fortran().我尝试首先使用Rinside,它的工作速度非常慢,正如Dirk所指出的那样.(数据通过R - > C++ - > R - > Fortran是昂贵的)

由于我不想用C++重写Fortran代码,反之亦然,通过将C++直接链接到Fortran来加速程序看起来很自然:R - > C++ - > Fortran.

// [[Rcpp::depends(RcppArmadillo)]]

#include <RcppArmadillo.h>
using namespace Rcpp;

extern "C"{
   List f_(int *n,NumericMatrix a, NumericVector c, double* eps);
}
Run Code Online (Sandbox Code Playgroud)

问题是我可以将C++与Fortran集成并将R与C++集成,但我不能让这三个东西一起工作!

我尝试在Linux中编译C++,但它无法找到RcppArmadillo.h并且namespace Rcpp:

 error: RcppArmadillo.h: No such file or directory
 error: 'Rcpp' is not a namespace-name
Run Code Online (Sandbox Code Playgroud)

当我sourceCpp("test.cpp")直接打电话给R时,控制台会显示:

test.o:test.cpp:(.text+0x20b2): undefined reference to `f_'
collect2: ld returned 1 exit status
Error in sourceCpp("test.cpp") : Error occurred building shared library. …
Run Code Online (Sandbox Code Playgroud)

c++ fortran r armadillo rcpp

19
推荐指数
1
解决办法
717
查看次数

标签 统计

armadillo ×1

c++ ×1

fortran ×1

r ×1

rcpp ×1