【发布时间】:2015-03-13 08:46:56
【问题描述】:
我想用 Rcpp 编写一个 C++ 函数,该函数使用 hypred 包中的 C 函数,该包位于 CRAN here。
我阅读了using C function from other package in Rcpp,但不明白这是否适用于我,如果适用,该怎么办。
所需的函数在源文件 /src/hypredRoutines.c 中,名为 meiosisFUNAllChr。
到目前为止,我根据这个 SO 问题 here 所做的是:
- 我将函数 meiosisFUNAllChr 与其余代码分开,并将其放在一个名为 meiosisFUNAllChr.c 的新文件中。
-
我创建了一个名为 meiosisFUNAllChr.h 的头文件,其中包含:
#ifndef MEIOSISFUNALLCHR_H #define MEIOSISFUNALLCHR_H void meiosisFUNallChr (...); #endif -
用它编译
gcc -c -o meiosisFUNAllChr.o meiosisFUNAllChr.c -
创建了一个虚拟 c++ 函数
#include <Rcpp.h> using namespace Rcpp; extern "C" { #include "meiosisFUNallChr.h" } // [[Rcpp::export]] int timesTwo(int x) { return x * 2; }
此时,使用 sourceCpp 编译不起作用。你能告诉我如何让它工作吗?
非常感谢!
编辑
用 sourceCpp 编译给了我:
meiosisFUNallChr.h: file or directory not found
【问题讨论】:
-
我不是 Rcpp 方面的专家,但我发现 RStudio 非常有用,因为它为它提供了模板。当你创建一个项目时,你可以指定它使用 Rcpp 并且它简化了很多事情。
-
我知道这些工具并且已经使用它们,但我不知道这将如何帮助我让 C 函数在我的代码中工作:-)
-
你试过使用
sourceCpp吗? -
@DominicComtois 是的,我做到了
-
好吧...当你说它不起作用时,你得到了什么?错误信息?还是该功能不可用?