使用R inline链接到另一个包

时间:2010-09-09 19:10:42

标签: gcc r rcpp

我有一个C ++ / Rcpp函数,我需要编译并链接到pomp包以访问随机数生成器。我可以包含头文件,但如何将其链接到已编译的代码?

CppColonized<-cxxfunction(
  sig=signature(x="numeric", t="numeric", params="numeric", dt="numeric"),
  plugin='Rcpp',
  includes = sprintf("#include <Rmath.h>\n#include <math.h>\n#include\"%s\"", 
    base:::system.file("include/pomp.h",package="pomp")),
  body=Code,verbose=T)

代码使用pomp包中的reulermultinom函数,当我评估它时会出现错误

  

未定义引用`reulermultinom(int,double,double *,double,double *)

发出的命令是

  

克++   -I“C:/PROGRA~1/R/R-211~1.1/include”-I“C:/PROGRA~1/R/R-211~1.1/library/Rcpp/include”   -O2 -Wall -c file2f752742.cpp -o file2f752742.o g ++ -shared -s   -static-libgcc -o file2f752742.dll tmp.def file2f752742.o   C:/PROGRA~1/R/R-211~1.1/library/Rcpp/lib/libRcpp.a   -LC:/PROGRA~1/R/R-211~1.1/bin -lR

似乎应该有-lpomp或类似的东西。

1 个答案:

答案 0 :(得分:1)

请参阅cxxfunction()包中getPlugin()sprintf()的文档。

您需要填写正确的-I ...和-L ...标志。 {{1}} hack有助于标题,它不会为您提供库位置。

此外,昨天关于使用rcpp-devel的提示仍然存在。你今天有三个高质量的回复。所以为什么不用它呢。我想我们在邮件列表档案中也有这样的例子。