Seite 1 von 1

undefined reference to double...

Verfasst: 20. Januar 2009 09:45
von nici
hallo,

ich bekomme einen Fehler, von dem ich denke, dass es gar kein Fehler ist. Vielleicht könnt ihr mir helfen, danke.

Code: Alles auswählen

int ix, iy;      
	for(ix=0; ix< img.width(); ix++){
	   for(iy=0; iy<img.height(); iy++){ 
	         double ax = (((ix-(265/2))*apertureAngle)/(256/2)); 
	         double ay = (((iy-(265/2))*apertureAngle)/(256/2)); 

	         double negChiDurchLambda = -TEMTableauAnalysis::opticalPathLength(aber, ax, ay) / lambda ;
	         double negChiDurchLambdaWrapped = (negChiDurchLambda - static_cast<double>(static_cast<int>(negChiDurchLambda)) ) ;
	   
	         if(negChiDurchLambdaWrapped < 0.0){
	              negChiDurchLambdaWrapped += 1.00 ;
	         }	
	   	              
	         // Testen: negChiDurchLambdaWrapped muss im Intervall [0.0, 1.0)     
	         double justForControl = (negChiDurchLambda - negChiDurchLambdaWrapped) ; // sollte bis auf Rundungsfehler ganzzahlig sein
	         img(ix, iy) = static_cast<int16>(negChiDurchLambdaWrapped * static_cast<double>(maxPixVal) + 0.5);

	}}
und vordefiniert ist:

Code: Alles auswählen

  static double opticalPathLength(Aberration aber, double ax, double ay);
Fehlermeldung:
undefined reference to `cstools::TEMTableauAnalysis::opticalPathLength(cstools::Aberration, double, double)'
collect2: ld returned 1 exit status
make: *** [QtAufgNeu] Fehler 1

Verfasst: 20. Januar 2009 10:06
von solarix
das ist keine Definition, sondern eine Deklaration. Du kündigst also die Funktion an ("static double...") und du verwendest sie ("opticalPathLength(aber, ax, ay) ").... Also solltest du sie auch irgendwann bis zum Linken ausprogrammieren (definieren).

Verfasst: 20. Januar 2009 10:57
von nici
hallo,

ja hattest recht. Ich hatte nicht die neuste Version der Library. der hat es einfach nicht gefunden, aber jetzt gehts, danke.

lg

nici