Rcpp:无法打开共享对象文件

问题描述 投票:0回答:1

由于Rcpp库,我正在尝试开发一个使用Arrayfire的R包。我已经开始编写示例代码(将其命名为hello_world.cpp),如下所示:

#include <arrayfire.h>

// [[Rcpp::export]]
bool test_array_fire(){
    af::randu(1, 4);    
    return true;
}

然后,我尝试使用sourceCpp函数进行编译

Rcpp::sourceCpp('src/hello_world.cpp')

我的第一个惊喜是我必须手动设置一些标志(编译一段C ++代码时,sourceCpp似乎忽略了Makevars config)。我这样做的是:

Sys.setenv("PKG_CXXFLAGS"="-std=c++11")
Sys.setenv("PKG_CPPFLAGS"="-I/opt/arrayfire/include/")
Sys.setenv("PKG_LIBS"="-L/opt/arrayfire/lib64/ -laf")

但是,代码仍然无法正确编译。每个试验以以下输出结束:

Error in 'dyn.load("/tmp/RtmpHaODIU/sourceCpp-x86_64-pc-linux-gnu-1.0.2/sourcecpp_689c5adb8d/sourceCpp_14.so")':
unable to load shared object '/tmp/RtmpHaODIU/sourceCpp-x86_64-pc-linux-gnu-1.0.2/sourcecpp_689c5adb8d/sourceCpp_14.so':
  libaf.so.3: cannot open shared object file: No such file or directory

[不幸的是,我找不到解决问题的方法(即使某些堆栈溢出问题提出的问题乍一看也差不多)。

我该如何解决?

rcpp arrayfire
1个回答
0
投票

几件事,很快:

  • [当您使用sourceCpp()时,您没有使用包裹
  • 与软件包一起使用的随机删除变量没有帮助
  • 实际上有[[是拉尔夫·惠(Ralf whi)的包裹可能会响起]
  • 并且我们有关于它的文章here at the Rcpp Gallery
  • 因此,我可能首先从Rcpp Gallery article about RcppArrayFire重做/重建示例。
  • © www.soinside.com 2019 - 2024. All rights reserved.