Précédent   Forum des professionnels en informatique > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 15h36   #1
Invité régulier
 
Étudiant
Inscription : novembre 2008
Messages : 10
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 10
Points : 7
Points : 7
Par défaut [JNI] Accéder à un tableau stoker dans un objet.

Bonjour,

Je cherche à appeler une méthode sur un objet Java en JNI avec la signature : "()[D". Je pensais trouver une fonction du type CallDoubleArrayMethod mais celle-ci ne semble pas être définie sur le pointeur *env.

Pour mes recherches j'ai consulté cette doc http://java.sun.com/docs/books/jni/html/jniTOC.html qui ne semble malheureusement pas être à jour.

Quelqu'un connaîtraient-ils la nom de la méthode à appeler dans ce cas?

Merci d'avance.
Andarus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h30   #2
Membre éprouvé
 
Homme Eric
Inscription : décembre 2010
Messages : 254
Détails du profil
Informations personnelles :
Nom : Homme Eric
Localisation : France

Informations forums :
Inscription : décembre 2010
Messages : 254
Points : 450
Points : 450
sun ayant été racheté par Oracle...un petit tour sur http://docs.oracle.com/javase/7/docs...ec/jniTOC.html ou son équivalent pour ta version de travail pour java
therwald est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/02/2012, 17h09   #3
Invité régulier
 
Étudiant
Inscription : novembre 2008
Messages : 10
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 10
Points : 7
Points : 7
Par défaut Proposition de solution

J'ai trouvé cette solution qui semble fonctionner :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
JNIEXPORT void JNICALL jnifonction (JNIEnv *env, jclass classJava, jobject tabHandler)
{
	//Récupérer la classe
	jclass TabHandler= env->FindClass("com/TabHandler");
	//Récupérer la methode d'accès au tableau
	jmethodID getTab = env->GetMethodID(TabHandler, "getTab", "()[D");
	//On récupère le tableau comme un objet java.
	jobject temp = env->CallObjectMethod(TabHandler, getTab);
	//Un cast violent...
	jdoubleArray *jtab = reinterpret_cast<jdoubleArray*>(&temp);
	//On récupère le tableau C++ depuis le tableau java
	jdouble *tab= (jdouble*) env->GetPrimitiveArrayCritical(*jtrajectory, NULL);
	//On libère le tableau java.
	env->ReleasePrimitiveArrayCritical(*jtab, tab, 0);
}
Si l'un de vous à un avis sur la validité de cette méthode je suis preneur.
Andarus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h55.


 
 
 
 
Partenaires

Hébergement Web