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 :

Problème JNA - dll


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Par défaut Problème JNA - dll
    Bonjour, je suis nouveau sur ce site. J'espère avoir créer 'ma discussion' au bon endroit.

    J'ai actuellement un souci avec l'utilisation de JNA et cherche des personnes ayant déjà une expérience pour m'éclaircir un peu les idées. Voici les informations nécessaire à la compréhension de mon problème:
    - j'utilise une fonction callback pour récupérer des informations fournies par la dll. Je note INFO l'objet transmis par la dll. Je n'ai aucun problème pour l'objet INFO, celui-ci comporte tous les champs correctement renseigné.
    -Je dois faire un appel à une fonction de la dll pour que celle-ci libère la mémoire utiliser par l’objet INFO.
    -La dll est fourni par un prestataire (je n'ai pas le code source mais je peux demander des précision/analyse sur la dll et mon code jna)

    Le problème est le suivant : la dll génère une erreur lorsque j' appel la fonction de libération mémoire sur l'objet INFO. Le prestataire me dis que l'adresse du pointeur INFO appelé par la fonction de libération mémoire est différent que celui fourni par la dll. Je ne fais aucune action sur l'objet INFO : uniquement lecture de ces attributs.

    Ma question : est-ce que JNA agit sur les adresses des pointeurs fourni par l'application c (dll) ?

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Par défaut
    Hum aucune réponse, je n'ai peut être pas été très clair dans la définition du problème rencontré.
    Voici la définition des fonction de la dll (c++) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void (CALLBACK *functionCallBack)( INFO dataINFO);
    J'appelle une fonction c++ qui m'invoque une fonction de callback dès que la dll détecte un événement. Une fois la callback invoqué, je dois appeler une autre fonction pou libérer la mémoire (dll) de l'object dataINFO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void ReleaseDatMemory ( INFO *dataINFO);
    //dataINFO = adresse du pointeur sur la structure INFO
    Voici mon code java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public interface Link extends Library {
                    {...}
                    public interface functionCallBack extends Callback {
     		void invoke(INFO dataINFO);
                    }
     
                    void ReleaseDatMemory (INFO dataINFO);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class INFO extends Structure {
     
            public static class ByValue extends INFO implements Structure.ByValue {
     
    	}
     
    	public static class ByReference extends INFO implements Structure.ByReference {
     
    	}
            {...}
    }
    utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private static functionCallBack createfonctionCallback () {
    		final functionCallBack functionCallBackCreated = new functionCallBack () {
    			@Override
    			public void invoke(INFO dataINFO) {
    				//traitement INFO ...
    				link.ReleaseDatMemory (dataINFO);
    				}
    			}
    		};
    		return functionCallBackCreated;
    	}
    L'appel à la fonction ReleaseDatMemory ne fonctionne pas : le prestataire m'ayant fourni la dll me dis que je donne un mauvais paramètre.

Discussions similaires

  1. conteneur de la STL (problème avec DLL et COM)
    Par moldavi dans le forum MFC
    Réponses: 8
    Dernier message: 25/07/2005, 22h43
  2. Problème de dll à l'execution
    Par gege2061 dans le forum Windows
    Réponses: 3
    Dernier message: 11/03/2005, 11h22
  3. problème execution dll
    Par semenzato dans le forum MFC
    Réponses: 15
    Dernier message: 19/12/2003, 16h40
  4. Problème de DLL.
    Par Lunedor dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2003, 10h17

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