construction package 32&64 bits

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nathalie Grafféo
Messages : 23
Enregistré le : 03 Déc 2010, 09:42

construction package 32&64 bits

Messagepar Nathalie Grafféo » 03 Juin 2013, 12:56

Bonjour,

j'essaie de construire un package fonctionnant en 32 et 64 bits mais je ne comprends pas comment faire, malgré la documentation trouvée sur le net...


Voici ce que je fais:
avec

Code : Tout sélectionner

PATH=C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;C:\PROGRA~1\R\R-2.13.1\bin\i386;Perl64\bin;C:\MinGW\bin

je compile un programme

Code : Tout sélectionner

R CMD SHLIB monPgm.c
et j'obtiens monPgm.dll (qui tourne sur du R en 32 bits).
Je place ce .dll dans le src du package à compiler puis:

Code : Tout sélectionner

rcmd build monPkg
Le package obtenu fonctionne sur du 32 bits.



Je fais les mêmes opérations sur du 64 bits avec

Code : Tout sélectionner

PATH=C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;C:\PROGRA~1\R\R-2.13.1\bin\x64;Perl64\bin;C:\MinGW-x64\bin
et j'obtiens un package qui tourne en 64 bits.



Pourriez-vous me dire, svp, s'il faut construire la dll autrement? Et si oui, comment?

Sinon, auriez-vous des pistes à me proposer svp?

Merci d'avance pour votre aide.
Cdlt,
Nathalie.

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 05 Juin 2013, 07:39

Bonjour,

la première chose à faire est de mettre à jour votre version de R et la version de Rtools qui va bien avec.

la version 2.13.1 date de 2011-07-08 ... c'est pas tout jeune à l'échelle de temps de R.
et il ya eu pas mal de changement depuis.

HTH

pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

Nathalie Grafféo
Messages : 23
Enregistré le : 03 Déc 2010, 09:42

Messagepar Nathalie Grafféo » 11 Juin 2013, 16:45

Bonsoir et merci de l'intérêt que vous portez à ma question.

J'ai suivi votre conseil et installé R 3.0.1 ainsi que Rtools30.
Mon path est donc devenu:

Code : Tout sélectionner

PATH=C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;C:\PROGRA~1\R\R-3.0.1\bin\x64;C:\Perl64\bin;C:\MinGW-x64\bin


Malheureusement, mon problème reste le même.

Lorsque je compile ma dll (monPgm.c), c'est en 64 bits. Je pense que c'est cela qui bloque lorsque je tape

Code : Tout sélectionner

rcmd check myPkg

En effet, cela renvoie le message d'erreur suivant:
installing to C:/Users/utilisateur/Documents/myPkg.Rcheck/myPkg/libs/x64
** R
** data
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error in inDL(x, as.logical(local), as.logical(now), ...) :
impossible de charger l'objet partagé 'C:/Users/utilisateur/Documents/myPkg.Rcheck/myPkg/libs/i386/monPgm.dll':
LoadLibrary failure: %1 n’est pas une application Win32 valide.

Erreur : le chargement a échoué
Exécution arrêtée
*** arch - x64
ERROR: loading failed for 'i386'
* removing 'C:/Users/utilisateur/Documents/myPkg.Rcheck/myPkg'


Je ne comprends pas comment compiler le package pour obtenir quelque chose qui fonctionne en 32 bits et en 64 bits sachant que je ne peux lui fournir qu'une seule dll, qui sera soit en 32 bits soit en 64 bits...

Pourriez-vous m'aider svp à comprendre l'étape qui me manque svp?

Merci d'avance et bonne soirée.

Didier Plat
Messages : 225
Enregistré le : 02 Nov 2009, 16:47
Contact :

Messagepar Didier Plat » 11 Juin 2013, 17:47

Bonsoir,
Je crois que votre path n'est pas adapté. J'utilise encore R-2.15.1 (honte à moi sûrement...), mais j'ai un path qui ressemble à ça :

Code : Tout sélectionner

C:\Progra~1\Rtools\bin;C:\Progra~1\Rtools\gcc-4.6.3\bin;C:\Progra~1\R\R-2.15.1\bin;C:\Windows\system32;etc.

Je place le code écrit en C dans le sous-répertoire src et R CMD build monPkg construit ensuite simultanément le package pour les 2 versions 32 et 64.
En espérant que cela fonctionnera aussi avec R 3.0.1,

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 11 Juin 2013, 18:40

bonjour

Je place le code écrit en C dans le sous-répertoire src et R CMD build monPkg construit ensuite simultanément le package pour les 2 versions 32 et 64.


Je fais tout pareil avec 3.0.1. Pour la compilation d'un package sous woindose (7, x64), j'utilise ce vieux fichier .bat que je bricole au fil des versions:

http://code.google.com/p/plstools/sourc ... dStep2.bat

Attention, ce fichier est fortement cannibalisé et il y a certain des morceaux qui servent à (plus) rien ... il faut que je fasse du nettoyage :p

Par contre, pour les versions >= 3.0.0, il faut penser à mettre à jour le fichier NAMESPACE, car la fonction ".First.lib" n'est plus utilisé:
https://stat.ethz.ch/pipermail/r-announ ... 00561.html
http://cran.r-project.org/doc/manuals/R-exts.html

Voici un exemple de NAMESPACE:

Code : Tout sélectionner

# Export all names
exportPattern(".")
# load DLL
useDynLib(plstools)
# Import all packages listed as Imports or Depends
import(ade4)


HTH,



pierre
=@===--------¬-------¬------¬-----¬

liens utiles :

http://www.gnurou.org/Writing/SmartQuestionsFr

http://neogrifter.free.fr/welcomeOnInternet.jpg

]<((((*< -------------------------------


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité