質問

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つの高品質の返信があります。それで、なぜそれを使ってみませんか。メーリングリストのアーカイブにもこれの例があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top