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 :

[JNI] Tableaux en paramètres et retour de méthode


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 91
    Par défaut [JNI] Tableaux en paramètres et retour de méthode
    Bonjour,

    Aprés beaucoup de recherche j'ai pas arrivé a créer une fonction jni qui sert a prendre un tableau de double de deux dimensions depuis mon porgramme java et faire quelques calcules et apres retourner un nouveau tableau( resultat de calcules ).est ce que vous pouvez m'aider a trouver la solution?

    Amicalement

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 91
    Par défaut Code Source
    Fichier.java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package portefeuille;
     
    import java.util.Vector;
     
    /**
     *
     * @author administrateur
     */
    public class Test {
        static {
            System.load("E:\\projet_fin_detudes\\PortefeuilleNative\\dist\\variation.dll");
        }
        public static TraitementFichier tcv =new TraitementFichier();/* classe qui communique avec la table BD*/
        public static Vector v=new Vector();
    public static void main(String[] args) {
        v = tcv.chercher("action_france,obligation_france","1960-12-31","1961-02-28");
    double [][] tab=new TableauAfficher().Remplir(tcv.chercher("action_france,obligation_france","1960-12-31","1961-01-31"));
       // double [][] tab = null;
    VariationNative(tab);
    }
     
        public static native  double[][] VariationNative(double[][] tab) ;
     
    }

    Fichier.c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "testNative.h"
    JNIEXPORT jobjectArray JNICALL Java_portefeuille_Test_VariationNative
      (JNIEnv * env, jclass classe , jobjectArray joa)
    {
     
       jclass intArrCls = (*env)->FindClass(env, "[D");
    int i,j;
     
        jint len1 = (*env)->GetArrayLength(env, joa);
        jdoubleArray colone = (*env)->GetObjectArrayElement(env,joa, 0);
        jint len3 = (*env)->GetArrayLength(env,colone);
        for (j=0; j<len3; j++) {
            jdoubleArray colonne = (*env)->GetObjectArrayElement(env,joa, j);
     
            jdouble *element = (*env)->GetDoubleArrayElements(env,colonne, 0);
            for(i=0; i<len1; i++){
                     jdouble res = ((element[i+1]/element[i])-1)*100;
                  //traitement avec le jint
                printf("%d",&res);
                printf("test jni tableau ");
            }
     
        }
       return joa;
    }
    L'exception levé au moment de l'execution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: portefeuille.Test.VariationNative([[D)[[D
            at portefeuille.Test.VariationNative(Native Method)
            at portefeuille.Test.main(Test.java:24)
    Java Result: 1
    J'éspere que mon explication du probleme sera plus enn plus claire .


    Amicalement

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    System.load() prend en paramètre le nom de la librairie, sans l'extension ".dll" et sans le chemin.

    Si tu veux indiquer explicitement le fichier à charger (chemin+extension), il faut utiliser Runtime.load().


    En toute amitié,

    pseudocode.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. Client XML-RPC java qui interroge un serveur XML-RPC PHP : pb de paramètre de retour
    Par sbelli dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 13/06/2006, 11h09
  2. Réponses: 7
    Dernier message: 06/05/2006, 15h06
  3. reflexion et type de retour des méthodes
    Par money mark dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 18h46
  4. [Tableaux] pas très sur de la méthode...
    Par Thierry8 dans le forum Langage
    Réponses: 7
    Dernier message: 12/10/2005, 13h25
  5. Réponses: 3
    Dernier message: 30/05/2005, 23h28

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