I have a C++/Rcpp function the I need to compile and link to the pomp package to get access to a random number generator. I can get the header file included but how to I get it to link to the compiled code?
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)
The code uses the reulermultinom function in the pomp package and when I evaluate it it gives the error
undefined reference to `reulermultinom(int, double, double*, double, double*)
The commands being issued are
g++
-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
Is seems like there should be a -lpomp or something like that.
Please see the documentation for
cxxfunction()andgetPlugin()in package inline.You need to fill in proper -I… and -L… flags. The
sprintf()hack helps for the header, it doesn’t give you the library location.Also, yesterday’s hint about using rcpp-devel still holds. You got three high-quality replies there today. so why not use it. I think we have examples for this in the mailing list archives too.