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 :

[JNA] Appeler une fonction modifiant le contenu d'un tableau


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut [JNA] Appeler une fonction modifiant le contenu d'un tableau
    Bonjour à tous,

    Je m'arrache les cheveux et j'espère que vous pourrez m'empêcher de devenir un chauve précoce !

    Ayant besoin d'appeler du C++ en java, je me suis constitué une petite librairie dynamique avec une interface C assez simple encapsulant mon logiciel.
    Je n'ai aucun problème avec JNA pour appeler les fonctions de ma librairie nécessitant des argument (même des tableaux) et aucun problème pour lire la valeur de retour de la fonction.
    Par contre, je rencontre un problème lorsque je donne à ma fonction un tableau de doubles qui doit être modifié par la fonction C. Il n'y a aucune erreur, mais le contenu du tableau n'est pas modifié.

    J'ai écrit ma classe utilisant JNA de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    package com.mycompany.component.mysoftware.mypackage;
    import com.sun.jna.Library;
    public interface LibMinamo extends Library
    {
    	public int ma_fonction(int size, double[] values);
    }
    Et ma librairie C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    extern "C" int ma_fonction(int size, double* values)
    {
    	try
    	{
    		for(int i = 0; i < size; i++)
    			values[i] = 3.1416;
    		return 0;
    	}
    	catch(...){ return 1; }
    }
    Ce mode de fonctionnement fonctionne bien en lecture, mais je ne parviens pas à faire écrire la librairie dans l'espace mémoire alloué par java.
    Je suppose que JNA a donc quelque part fait une copie des données pour le C++.

    Pouvez-vous m'éclairer sur une marche à suivre proche de ce que je fais qui serait fonctionnelle ?
    Merci d'avance,

    Christophe.

  2. #2
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Au temps pour moi.
    Cette méthode fonctionne très bien.
    J'avais une exception non catchée dans mon code C++ qui a tout foutu en l'air.

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

Discussions similaires

  1. [POO] appeler une fonction contenue dans une autre fenetre
    Par pepper18 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/09/2008, 02h27
  2. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  3. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  4. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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