直接在 Rcpp 中使用 (c)igraph(即,不经过 R)

she*_*heß 4 c++ r external igraph rcpp

我在 R 中使用 igraph。现在我正在尝试转向 Rcpp。igraph 是用 C 编写的,但可以从 R 中调用。现在从 C++ 我想直接调用它。

目前我的 Rcpp C++ 代码调用 R,它再次调用 C。这似乎很愚蠢。相反,我不想直接从我的 Rcpp C++ 代码中调用 C 库。一种方法似乎是简单地下载 igraph 标头并将其添加到 Rcpp 中:

#include <igraph-0.7.1\include\igraph.h>
Run Code Online (Sandbox Code Playgroud)

但随后编译器抱怨它找不到实际的代码(只有标题):

...
functions.o:functions.cpp:(.text+0x2fd): undefined reference to `igraph_matrix_set'
...
Run Code Online (Sandbox Code Playgroud)

将所有 ipgraph 编译为 Rcpp 依赖项似乎很困难,或者至少我找不到关于如何做到这一点的好的文档。

鉴于 igraph 是从 R 调用的,即在我的系统上运行,我怀疑应该有一种方法可以从 C++ 调用它,而无需通过 R 绕道而行,就像

// [[Rcpp::depends(igraph)]]
Run Code Online (Sandbox Code Playgroud)

任何指针都会非常感谢。

Ral*_*ner 5

虽然 R 包可以提供其他 R 包可以调用的 C 函数,但该igraph包不会这样做。我看到以下可能性:

  • 大厅为igraph包提供其功能也在 C 级别,最好通过提供补丁。有关详细信息,请参阅 WRE。

  • 与系统安装的igraphC 库链接,即您现在在做什么。

  • igraph在包中包含C 库。

  • 编写一个仅包含igraph库和 C/C++ API 必要代码的附加包。使用 Rcpp 时,这应该相对简单。