Bonjour

Je vais tâcher d'être le plus clair possible. Je développe une appli Java qui va effectuer des appels vers une librairie C++ que je développe parallèlement. A un moment, j'envoie une série de paramètres à cette librarie que je récupère correctement avec la méthode suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
JNIEXPORT void JNICALL Java_com_bioxpr_linkers_BeaconPCR_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);
		std::cout << env->GetStringUTFChars(jstr, 0) << std::endl;
	}
	FindBeacon(a, args);
}
La sortie me montre qu'aucun de mes arguments ne manque. Je dispose d'une structure dans laquelle je range ces arguments :
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
 
struct ArgumentsB
{
  std::string FileName;
  int Tm, TmTol, TaOpt, TaOptTol, MinLenAmp, MaxLenAmp;
  double HmdG3pEnd, HmdGIntern, SdmdG3pEnd, SdmdGIntern;
  int RmLen, GCclamp;
  double _3pEndmSdG;
  int MabinAmp, MppTmm;
  double CdmdG3pEnd, CdmdGIntern;
  int MinLenPrim, MaxLenPrim, MinGC, MaxGC;
  double PrimConc, MgConc, NaConc;
 
 
  bool Init(int argc, const char* argv[]);
  ArgumentsB(int argc, const char* argv[]);
};
Mon problème vient du fait qu'un seul argument n'est pas pris en compte, celui du FileName. Voici un extrait de code où je remplis ma structure :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
bool ArgumentsB::Init(int argc, const char* argv[])
  {
    using namespace Args;
 
    ArgumentParser parser;
 
    parser.addArgument ( "-FileName", Argument(1, true) );
    parser.addArgument ( "-Tm", Argument(1, false) );
    parser.addArgument ( "-TmTol", Argument(1, false) );
    parser.addArgument ( "-TaOpt", Argument(1, false) );
    parser.addArgument ( "-TaOptTol", Argument(1, false) );
	parser.addArgument ( "-MinLenAmp", Argument(1, false) );
    parser.addArgument ( "-MaxLenAmp", Argument(1, false) );
    parser.addArgument ( "-HmdG3pEnd", Argument(1, false) );
    parser.addArgument ( "-HmdGIntern", Argument(1, false) );
    parser.addArgument ( "-SdmdG3pEnd", Argument(1, false) );
    parser.addArgument ( "-SdmdGIntern", Argument(1, false) );
    parser.addArgument ( "-RmLen", Argument(1, false) );
    parser.addArgument ( "-GCclamp", Argument(1, false) );
    parser.addArgument ( "-3pEndmSdG", Argument(1, false) );
    parser.addArgument ( "-MabinAmp", Argument(1, false) );
    parser.addArgument ( "-MppTmm", Argument(1, false) );
	parser.addArgument ( "-CdmdG3pEnd", Argument(1, false) );
    parser.addArgument ( "-CdmdGIntern", Argument(1, false) );
    parser.addArgument ( "-MinLenPrim", Argument(1, false) );
    parser.addArgument ( "-MaxLenPrim", Argument(1, false) );
    parser.addArgument ( "-MinGC", Argument(1, false) );
    parser.addArgument ( "-MaxGC", Argument(1, false) );
    parser.addArgument ( "-PrimConc", Argument(1, false) );
    parser.addArgument ( "-MgConc", Argument(1, false) );
    parser.addArgument ( "-NaConc", Argument(1, false) );
 
    if(!parser.Parse(argc, argv)) return false;
    {
      const Argument& arg=parser.getArgument("-FileName");
      FileName = arg.getValue(0);
    }
    {
      const Argument& arg=parser.getArgument("-Tm");
      if( arg.isInitiated() ) {
	Tm=arg.getInteger(0);
      }
    }
Alors que les autres paramètres sont correctement remplis, seul FileName reste vide.
Où ai-je bien pû me tromper ?
Merci d'avance de vos réponses.

@++