直接在 Rcpp 中使用 (c)igraph(即,无需通过 R)
Use (c)igraph in Rcpp directly (i.e., without going through R)
我在R中使用igraph。现在我正在尝试移动到 Rcpp。 igraph 是用 C 编写的,但可以从 R 调用。现在从C++我想直接打电话给它。
目前我的 Rcpp C++代码调用 R,R再次调用 C。这似乎很愚蠢。相反,我不想直接从我的 Rcpp C++代码调用 C 库。一种方法似乎是简单地下载 igraph 标头并将其添加到 Rcpp 中:
#include <igraph-0.7.1includeigraph.h>
但随后编译器抱怨它找不到实际代码(只有标头(:
...
functions.o:functions.cpp:(.text+0x2fd): undefined reference to `igraph_matrix_set'
...
将所有ipgraph编译为Rcpp依赖项似乎很困难,或者至少我找不到有关如何做到这一点的良好文档。
鉴于 igraph 是从 R 调用的,即在我的系统上运行,我怀疑应该有一种方法可以从C++调用它,而无需绕道 R,类似于
// [[Rcpp::depends(igraph)]]
任何指针都会得到极大的赞赏。
虽然 R 包可以提供其他 R 包可以调用的 C 函数,但igraph
包不会执行此操作。我看到了以下可能性:
游说
igraph
包也在C级别提供其功能,最好通过提供补丁。有关详细信息,请参阅 WRE。链接到安装在 C 库
igraph
的系统,即您现在正在做的事情。在包中包含
igraph
C 库。编写一个附加包,其中仅包含
igraph
库以及 C/C++ API 的必要代码。在使用 Rcpp 时,这应该相对简单。
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- rcpp函数中的清理时间很长
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 从 Rcpp Catch 测试中获取有关"inst/extdata"的数据
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- std::mt19937 in Rcpp
- Rcpp并行无匹配函数,用于调用"转换"
- 通过 RCPP 中的索引求和
- 混合 Rcpp 模块和 Rcpp::export
- 有没有办法在RCPP程序无法正常工作时阻止RGui崩溃?
- 用于子集字符串的 Rcpp 函数
- 通过 Rcpp 和 bit64 R 包将最大的int64_t变量值从 C++ 传递到 R
- 在模板化的 Rcpp 函数中调用另一个 cpp 函数
- Rcpp 函数在打包时使 RStudio 崩溃
- 在数据帧上应用 Rcpp
- 在 Rcpp 中的字符串类型之间转换时出错
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 使用 Rcpp 公开将指向对象的指针作为参数的构造函数
- 从 Rcpp 函数返回指向"新"对象的指针的正确方法
- 直接在 Rcpp 中使用 (c)igraph(即,无需通过 R)