Bonjour a tous,

j'ai actuellement un problème avec l'utilisation d'une DLL sous java.

j'utilise actuellement plusieurs DLL grace a JNI ou JNA (une dll intermédiaire en c++)et cela marche très bien (car les fonction de ses dll sont en exported).Mais le problème vient lorsque j'essaye d'utiliser une dll qui contient quasiment que des fonctions de type COM.

Pour les Dlls Simple j'utilise le code C++ suivant pour construire les fonctions de la dll intermédiaire:

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
JNIEXPORT jstring JNICALL Java_CallDllTest_mamethode(JNIEnv *env,jobject obj, jstring num1, jstring num2,jint port){
 
     const char* str1=env->GetStringUTFChars(num1,0);
     const char* str2=env->GetStringUTFChars(num2, 0);
 
   HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\Madll.dll");
 
   FARPROC lpfnGetProcessID = GetProcAddress(HMODULE
   (hGetProcIDDLL),"mamethode");
   typedef  char* (__stdcall * pICFUNC)(const char*,const char*, jint);
 
   pICFUNC lancer_requete;
   lancer_requete = pICFUNC(lpfnGetProcessID);  
      char* valeurRtn="";
     valeurRtn =  lancer_requete(str1, str2,port); 
        char temp1[80000];
        char temp2[10000]="\"";      
      strcpy (temp1,valeurRtn);
      strcat (temp1,temp2);
     strcat (temp2,temp1);
     jstring st=env->NewStringUTF(temp2);
 
   return st;
 
  }

Malheureusement ce code ne fonctionne pas pour invoquer les fonctions Com.Une solution, ou une piste SVP?
Merci par avance.