Un lien vers un autre paquet avec R inline
Question
J'ai une fonction C ++ / CRPP le besoin I de compiler et lien vers le paquet de pompe pour obtenir l'accès à un générateur de nombres aléatoires. Je peux obtenir le fichier d'en-tête inclus, mais comment je l'obtiens un lien vers le code compilé?
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)
Le code utilise la fonction reulermultinom dans l'ensemble de la pompe et quand je l'évaluer donne l'erreur
undefined reference to `reulermultinom (int, double, double *, double, double *)
Les commandes sont émis
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
est-il semble qu'il devrait y avoir un -lpomp ou quelque chose comme ça.
La solution
S'il vous plaît voir la documentation cxxfunction()
et getPlugin()
dans le paquet en ligne .
Vous devez remplir une bonne -I ... et -L ... drapeaux. Le hack sprintf()
aide pour l'en-tête, il ne vous donne pas l'emplacement de la bibliothèque.
En outre, l'indice d'hier sur l'utilisation CRPP-devel détient encore. Vous avez trois réponses là-bas aujourd'hui de haute qualité. alors pourquoi ne pas l'utiliser. Je pense que nous avons des exemples pour cela dans les archives de la liste de diffusion aussi.