質問
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*)への未定義の参照
発行されるコマンドは次のとおりです
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 file22752742.o c:/progra~1/r/r-211~1.1/library/rcpp/lib/ liblcpp.a -lc:/progra~1/r/r-211~1.1/bin -lr
-lpompかそのようなものがあるべきだと思われます。
解決
のドキュメントをご覧ください cxxfunction()
と getPlugin()
パッケージで 列をなして.
適切な-i ...および-l ...フラグを入力する必要があります。 sprintf()
ハックはヘッダーに役立ちますが、ライブラリの場所を提供しません。
また、昨日のRCPP-Develの使用に関するヒントはまだ保持されています。今日、3つの高品質の返信があります。それで、なぜそれを使ってみませんか。メーリングリストのアーカイブにもこれの例があると思います。