我正在使用 Rcpp 将自己编写的 C++ 导入 R。
我有以下 3 个 C++ 文件
头文件.h
#include <Rcpp.h>
int x();
Run Code Online (Sandbox Code Playgroud)
定义文件
#include <Rcpp.h>
#include "header.h"
// [[Rcpp::export]]
int x()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
调用.cpp
#include <Rcpp.h>
#include "header.h"
// [[Rcpp::export]]
int callx(){
return x();
}
Run Code Online (Sandbox Code Playgroud)
成功编译后,我可以调用该函数callx()以及x()从 R
R> callx()
[1] 0
R> x()
[1] 0
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用文件 call.cppcppSource获取文件时,我收到此错误
> Rcpp::sourceCpp('src/call.cpp')
Error in dyn.load("/tmp/RtmpNpOnpJ/sourceCpp-x86_64-pc-linux-gnu-0.12.16/sourcecpp_3a47f828d0d/sourceCpp_2.so") :
unable to load shared object '/tmp/RtmpNpOnpJ/sourceCpp-x86_64-pc-linux-gnu-0.12.16/sourcecpp_3a47f828d0d/sourceCpp_2.so':
/tmp/RtmpNpOnpJ/sourceCpp-x86_64-pc-linux-gnu
0.12.16/sourcecpp_3a47f828d0d/sourceCpp_2.so: undefined symbol: _Z1xv
Run Code Online (Sandbox Code Playgroud)
对于编译,我使用R CMD …