Passage de paramètre entre Java et C++
Bonjour,
Aujourd'hui je suis confronté à la récupération de données provenant de Java et à leur utilisation dans C++.:(
J'ai une variable de type jstring ( jni.h) qui me renvoie une chaine de caractères
Je dois lui envoyer une chaine de caractère à analyser. J'ai ma chaine de caractère en const wchar_t*. Mon programme demande en entrée un jstring. J'ai compris que cette jstring ressemblait a la wstring de c++, mais mon compilateur n'accepte pas ce transcodage.
Qulq'un peut il m'orienter vers une solution de transcodage c++<-> jstring.
ce serait :ccool:
Solution de transfert jstring <=> std::wstring
J'ia trouvé la réponse sur le forum de Sun Java :roll:
je vous donne le code correspondant
déclaration:
Code:
1 2 3
|
#include "jni.h"
JNIEnv * env; |
pour le code j'ai une suite qui prend une string provenant de Forms, la convertit en wstring, puis en jstring, après l'appel de la fonction il renvoie un jstring qu'on ramène en std::wstring
Code:
1 2 3 4 5 6 7 8 9 10 11
|
std::wstring InText;
std::wstring OutText;
wchar_t* s;
BTagger_setup ();
s = objStrConv.ambstowcs(RichEdit1->Text.c_str());
InText.assign( s);
objStrConv.StrFreeW( s);
jstring jstr = env->NewString((jchar *)InText.c_str(), InText.length());
jstring joutstr = WorkTagger( jstr);
OutText.assign((wchar_t *)env->GetStringChars(joutstr, NULL)); |
C'est bien accepté par le compilateur. J'ai un pb de techno maintenant à résoudre avant de donner le statut d'exécution
à+ :D
Outils de diagnostic sur les interfaces des DLL
Bonjour,
Pour vérifier le code dessus j'ai besoin d'un outil qui me permette de savoir pouquoi les appels aux primitives de la DLL sortent en Unresolved external. Ces appels sont "sous réserve de vérification" conformes à la pratique. J'en donne ci dessous une illustration.
Code:
1 2
|
__declspec(dllexport) void BTagger_setup () |
a+:ccool:
Les machines virtuelle de Java
Quand on utilise les fonctions prototypés dans jni.h, il faut avoir préalablement à l'exécution de la fonction avoir un objet de la classe JNIEnv cree par le new
Code:
1 2 3 4 5
|
JNIenv * env;
env = new JNIenv; |
et aussi qu'il faut être relié à une machine virtuelle Java
http://java.sun.com/docs/books/jni/h...oke.html#11202
à+:zoubi: