C++ 直接在Rcpp中使用(c)IGRAPHE(即不经过R)

C++ 直接在Rcpp中使用(c)IGRAPHE(即不经过R),c++,r,external,igraph,rcpp,C++,R,External,Igraph,Rcpp,我在R中使用igraph。现在我正在尝试移动到Rcpp。Simulh是用C编写的,但可以从R调用。现在我从C++直接调用它。 目前我的RCPP C++代码调用R,它再次调用C。那似乎很愚蠢。相反,我不会直接从我的RCPP C++代码调用C库。一种方法似乎是下载igraph头并将其添加到Rcpp中: #include <igraph-0.7.1\include\igraph.h> 将所有ipgraph编译为Rcpp依赖项似乎是一个难题,或者至少我找不到关于如何实现这一点的好文档 <

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

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

#include <igraph-0.7.1\include\igraph.h>
将所有ipgraph编译为Rcpp依赖项似乎是一个难题,或者至少我找不到关于如何实现这一点的好文档

< P>从R调用,即在我的系统上运行,我猜想应该有一种方法来调用C++,而不必绕过R,如

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

任何指针都会非常有用。

虽然R包可以提供其他R包可以调用的C函数,但igraph包不这样做。我认为有以下可能:

  • 为igraph软件包提供大厅,以便在C级提供其功能,最好提供补丁。详情见WRE

  • 链接已安装的系统
    igraph
    C库,即您现在正在做的事情

  • 在软件包中包括
    igraph
    C库

  • 编写一个只包含
    igraph
    库以及C/C++API所需代码的附加包。在使用Rcpp时,这应该是相对直接的


您的include路径看起来很可疑,它应该是
#include
。您可能需要在CmakeList或用于包含标题的任何内容中对其进行修复。感谢您指出这一点,我将其更改为您建议的内容,并在R中添加了
Sys.setenv(“PKG_CXXFLAGS”=“-I'D:/path/to/folder/igraph-0.7.1/include/”
,用作bevofer,但不能解决整个构建脚本的原始问题,可能会帮助我们找到问题。在使用路径中不应该使用反斜杠:它的含义不是由C++标准定义的,实际上它在非Windows系统上是不工作的。这是对nada所说的内容的补充。@nada,没有明确的构建脚本,因为我正试图将其设置为使用Rcpp“开箱即用”。因此,只有Rcpp在后台自动生成的内容。不确定要发布哪些内容以更轻松地定位问题。
// [[Rcpp::depends(igraph)]]