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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top