IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entr�e/Sortie Java Discussion :

Tutoriel pour ex�cuter du code natif � partir de Java avec JNA, en 5 minutes


Sujet :

Entr�e/Sortie Java

  1. #1
    R�dacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ing�nieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : Ing�nieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par d�faut Tutoriel pour ex�cuter du code natif � partir de Java avec JNA, en 5 minutes
    Bonjour,

    Je vous propose un tutoriel tr�s court sur l'utilisation compl�te de JNA permettant d'appeler du code natif depuis Java.

    Voici le lien du tutoriel : http://mbaron.developpez.com/tutorie...jna-5-minutes/

    Profitez de cette discussion pour laisser vos commentaires

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'h�sitez pas � consulter la FAQ Java et � poser vos questions sur les forums d'entraide Java
    --------
    Ing�nieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    R�dacteur/Mod�rateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Ao�t 2005
    Messages
    6 909
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : Nouvelle-Cal�donie

    Informations professionnelles :
    Activit� : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par d�faut
    Merci Michael,
    quelques points compl�mentaires concernant la compilation sous Windows.
    En effet si l'export des symboles dans la biblioth�que dynamique est automatique quand on compile avec GCC* sous Linux (et macOS dans ton cas), cela ne semble pas �tre le cas avec les diff�rents compilateurs � ma disposition sous Windows :

    • gcc 4.6.3 (mingw) -> le DLL produit est 32bit, ne contient pas de symboles export�s.
    • gcc 5.3.0 (mingw) -> le DLL produit est 32bit, ne contient pas de symboles export�s.
    • gcc 6.3.0 (mingw-64) -> le DLL produit ne contient pas de symboles export�s.
    • gcc 4.9.3 (cygwin-64) -> le DLL produit ne contient pas de symboles export�s et d�pend de cygwin1.dll.
    • Visual Studio 2015 -> Le DLL produit contient la d�finition de la fonction display() (voir ci-dessous) et d�pend de vcruntime140.dll et uctrbased.dll.
      • pour exporter la fonction display() il faut mettre dans le fichier helloworld.h la ligne suivante au lieu de ce qui est �crit dans ton article :
        Code C : S�lectionner tout - Visualiser dans une fen�tre � part
        __declspec(dllimport) void display(char* ch);
        Impossible d'exporter printf() de cette fa�on et j'ai pas creus� donc il faudra soit d�finir une nouvelle fonction C qui l'invoque, soit commenter les lignes �quivalentes cot� Java.
      • Note: pour une compilation 64bit,
        • Dans Project->Properties changer la Platform en x64
        • Dans Project->Properties->General changer Configuration Type en Dynamic Library (DLL)
        • Dans Dans Project->Properties->Linker->Advanced changer Target Machine en Machine x64 (/MACHINE:X64) (si ce n'est pas d�j� fait)


    Du coup, j'ai pu lancer le prog en utilisant le DLL g�n�r� par VC 2015 (apr�s avoir comment� tout ce qui est en rapport avec printf() dans le code Java)

    *V�rifiable en faisant : readelf -Ws helloworld.so
    Merci de penser au tag quand une r�ponse a �t� apport�e � votre question. Aucune r�ponse ne sera donn�e � des messages priv�s portant sur des questions d'ordre technique. Les forums sont l� pour que vous y postiez publiquement vos probl�mes.

    suivez mon blog sur D�veloppez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    R�dacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ing�nieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : Ing�nieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par d�faut
    Salut Fabrice,

    Merci beaucoup pour tes remarques tr�s constructive. Je vais voir comment modifier mon tutoriel.

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'h�sitez pas � consulter la FAQ Java et � poser vos questions sur les forums d'entraide Java
    --------
    Ing�nieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  4. #4
    R�dacteur/Mod�rateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Ao�t 2005
    Messages
    6 909
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : Nouvelle-Cal�donie

    Informations professionnelles :
    Activit� : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par d�faut
    PS : pour inspecter les DLLs sous Windows et voir ce qui �tait export� (ou pas), les d�pendances ou la plateforme cibl�e (x86 vs x64), j'ai utilis� Dependency Walker.
    Merci de penser au tag quand une r�ponse a �t� apport�e � votre question. Aucune r�ponse ne sera donn�e � des messages priv�s portant sur des questions d'ordre technique. Les forums sont l� pour que vous y postiez publiquement vos probl�mes.

    suivez mon blog sur D�veloppez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    R�dacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    2 111
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 2 111
    Par d�faut
    Pour information il y a un troisieme comp�titeur :
    JNR-FFI

    Aussi simple que JNA avec les quasi-perf de JNI.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 13/02/2016, 10h56
  2. Pas assez de m�moire pour ex�cuter un code
    Par med_ellouze dans le forum Langage
    R�ponses: 6
    Dernier message: 11/08/2007, 02h51
  3. Allocation m�moire pour ex�cution de code g�n�r�
    Par mchk0123 dans le forum x86 32-bits / 64-bits
    R�ponses: 6
    Dernier message: 06/04/2007, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo