Bonjour
Bien que cette question comporte certes le tag JNI (interafaçage Java Natif), ma question porte plus sur mon code C++ de ma librairie.
Voici mon problème. J'ai écrit une librairie C++ et je veux pouvoir, avec un code Java, soumettre et récupérer des données àcette librairie. C'est plus pour la récupération que mon problème intervient. Je dispose d'un fichier C++ avec le header suivant :
Voici le code C++ qui interroge la librairie et qui renvoit un résultat :
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 #ifndef FINDPRIMERS_H_ #define FINDPRIMERS_H_ #include <string> #include "PrimersResults.h" struct Arguments { long int MinWin, MaxWin, MinTm, MaxTm, MaxDiffTm, MinGC, MaxGC, MinAmp, MaxAmp; double MinDeltaGH; std::string FileName, FileTheo; void Usage() const; bool Init(int argc, const char* argv[]); Arguments(int argc, const char* argv[]); }; extern PrimersResults pResults; void SearchPrimers(PrimersResults& results, TSetSeq& SetSeq, TSetSeq& TheoSeq, long int MinWin, long int MaxWin, long int MinTm, long int MaxTm, long int MinGC, long int MaxGC, double MinDeltaGH, long int Type); void FindPrimers(int nb, const char *words[]); #endif /*FINDPRIMERS_H_*/
Or à l'exécution, j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "FindPrimers.h" #include "Main.h" JNIEXPORT jlong JNICALL Java_Main_getLine (JNIEnv *env, jobject object, jint a, jobjectArray string) { const char *args[a]; for (int i=0; i<a; i++){ jstring jstr = (jstring)env->GetObjectArrayElement(string, i); args[i] = env->GetStringUTFChars(jstr, 0); } FindPrimers(a, args); //return (jlong)pResults.nb_primers; return 2; }
Ce qui me semble bizarre c'est qu'à la compilation, je n'ai pas d'erreur ni de warning !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.lang.UnsatisfiedLinkError: /home/dbourgais/Snippets/C-C++/MyLibraries/libPCR.so: /home/dbourgais/Snippets/C-C++/MyLibraries/libPCR.so: undefined symbol: pResults
Pourquoi alors ne reconnait-il pas pResults ?
Merci d'avance de vos réponses.
@++
Partager