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

API standards et tierces Java Discussion :

comment utiliser une dll en JAVA


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut comment utiliser une dll en JAVA
    Bonjour,
    Je travaille sur une logiciel capable de communiquer avec un port COM. Mon client m'a fourni une un fichier dll m'indiquant que je pouvais l'utiliser avec mon programme JAVA, en gros il doit y avoir des fonctions OpenPort, Write... Sauf que je n'ai aucun fichier jar de fourni. Et dans l'exemple qu'il m'ont donné ils utilisent VB. Ma question, est-il possible d'utiliser des fonctions incluses dans un dll en JAVA ? Si oui comment ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Je ne sais pas si j'ai bien compris ton problème mais as tu regardé du côté de JNI et System.loadLibrary() ?
    Tu peux regarder ici par exemple ou

    Bonne journée

  3. #3
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Tu peux aussi voir du coté de JNA https://jna.dev.java.net/

    A+
    Hydraland

  4. #4
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Je vais tester JNA merci.

  5. #5
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Pourrais-tu me donner un exemple de code permettant d'utiliser les fonctions d'une dll ? Parce que j'avoue ne pas avoir bien saisie les expliactions du site https://jna.dev.java.net/#getting_started

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il y a un exemple dans l'article sur JNI vs JNA : http://mbaron.developpez.com/javase/jnijna/#LV

    Grosso modo :
    1. Tu définis une interface qui étend l'interface marqueur Library (ou StdCallCallback pour les DLL Win32 qui utilisel a convention StdCall).
    2. Tu y définis les méthodes de ta DLL (même nom, et type de retour/paramètre correspondant). La plupart des type de base sont géré, mais si ta librairie utilise des structures / objets C++ ca risque d'être plus complexe.
    3. Tu utilises la méthode Native.loadLibrary() en lui passant le nom de ta DLL et le type de ton interface pour obtenir une implémentation de l'interface qui utilise les méthodes natives.



    a++

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ah donc c'est même pas une BYTE en C. Vu ce qui est écrit ici https://jna.dev.java.net/javadoc/ove...ml#marshalling, j'essaierais aussi avec un paramètre de type String tout simplement, mais je suis pas sûr. C'est du C++ dans ta dll ?

    EDIT : sinon essaaye avec un char[]
    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    long ReadWord(
        long esclave,
        long adresse,
        char[] ptR,
        long nombre);
    A utiliser comme ca si tu as une chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ReadWord(0,0,machaine.toCharArray(),0);

  8. #8
    Membre éclairé Avatar de Tanebisse
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 449
    Par défaut
    Si je pense que c'est un byte en C, au vue de la doc, mais vu que je ne sais pas ce que contient vraiment la DLL, j'en sais trop rien.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Le tout est de savoir comment est codé byte en C vu que c'est pas un type primitif, c'est peut-être juste un char, ou peut-être pas. Tu as juste ce document et pas la signature C exacte de la fonction ? Tu as essayé mes méthodes? essaye aussi au cas où avec un short[] parce que int16 c'est short en java... Sans plus d'infos je saispas trop quoi te dire de plus désolé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C] Comment utiliser une DLL ?
    Par The Lord of Nesquik dans le forum Windows
    Réponses: 1
    Dernier message: 14/05/2006, 12h26
  2. [COM] Comment utiliser une dll DotNet dans un projet win32 ?
    Par Marmottoc dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 05/05/2006, 15h58
  3. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20
  4. comment utiliser une DLL win32 en C??
    Par Jayceblaster dans le forum C
    Réponses: 8
    Dernier message: 31/03/2006, 12h49

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