Wie zu verwenden useDynLib() korrekt in ein R-Paket-namespace-Datei
Obwohl einige Lösungen vorhanden ist, auf dem internet fand ich nichts passendes für das problem bin ich curerntly vor (aber vielleicht bin ich einfach zu dumm):
Ich versuche zu bauen, ein R-Paket, das nutzt ein shared-object kompiliert durch ein Makefile (ja, schlechte Praxis, ich weiß, aber ein Makevars Datei kann nicht gerade sagen, kompilieren von C-und Fortran-code in eine shared-object) aus dem code in dem Paket ist src
- Verzeichnis. Egal wo ich kompilieren, die .also (ich habe versucht, die src
, libs
- und package-base-Ordner) oder wie ich es nennen (wie man die Lösungen oben genannten Staaten müssen benannt werden wie die Paket-es ist enthalten in), R CMD check
Ausfahrten mit
** testing if installed package can be loaded
Error in library.dynam(lib, package, package.lib) :
shared object ‘SoMNibEN.R.so’ not found
aufgrund der useDynLib(SoMNibEN.R)
Unterricht im my-NAMESPACE-Datei (wo SoMNibEN.R
ist mein Paket den Namen, aber es hat nicht funktioniert mit dem original-Namen, entweder)
Meine Vermutung ist, dass ich entweder mit, dass useDynLib()
Befehl falsch oder mache ich etwas falsch mit meinem Makefile (obwohl bei der Zusammenstellung ziemlich gut funktioniert und die shared-object erstellt wird in meinem Projekt-Ordner - ich weiß nur nicht, ob es kopiert wird, um die Paket-installation directory erfolgreich).
Also, wenn jemand weiß, was ich tun könnte falsch hier, bitte lassen Sie mich wissen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst die Namen des Pakets als argument, denn das ist die Namen des freigegebenen Objekts gebaut von R, z.B.
useDynLib("chron")
. Die Anführungszeichen sind optional (als-Sie sind fürlibrary()
etc).Ich auch empfehlen nicht ein Makefile verwenden, sondern einfach fallenlassen der C-und Fortran-Dateien in die
src/
- Verzeichnis. R ist im Allgemeinen intelligent genug, um zu wissen, was. Wenn Sie brauchen-I
etc schaltet können Sie Sie dort.Schließlich, verwenden CRAN. Es gibt Hunderte von Paketen mit kompilierten Quellen, und einige sind verpflichtet, zu ähnlich in der Struktur zu Ihrer Frage.
src/
Verzeichnis), mein Paket Zusammenstellung gelungen. Ich würde nicht nennen "kompilieren alle Dateien insrc/
in alphabetischer Reihenfolge" smart - obwohl. Danke für die Hilfe nochmal, trotzdem.