[JNI] Erreur d'exécution de ma librairie
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 :
Code:
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_*/ |
Voici le code C++ qui interroge la librairie et qui renvoit un résultat :
Code:
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;
} |
Or à l'exécution, j'obtiens l'erreur :
Code:
1 2
|
java.lang.UnsatisfiedLinkError: /home/dbourgais/Snippets/C-C++/MyLibraries/libPCR.so: /home/dbourgais/Snippets/C-C++/MyLibraries/libPCR.so: undefined symbol: pResults |
8O Ce qui me semble bizarre c'est qu'à la compilation, je n'ai pas d'erreur ni de warning !
Pourquoi alors ne reconnait-il pas pResults ?
Merci d'avance de vos réponses.
@++