View Single Post
Old 25-01-2007, 04:12   #1
ceccoggi
Senior Member
 
Iscritto dal: Sep 2001
Messaggi: 1551
[C]Errore stranissimo in fase di linking...chiedo aiuto!

Salve a tutti, non riesco + a ricompilare dei files che fino a qualche ora fa non mi davano nessunissimo problema di questo tipo...Premetto che feci delle modifiche, ma vedendo che non arrivavo a nessuna conclusione ho usato l'opzione "undo" di kate fino a tornare allo stato in cui tutto funzionava..Tra parentesi, se non ultima la compilazione non dovrebbe cancellarmi l'eseguibile creato in precedenza giusto?
E invece così è accaduto...l'eseguibile creato in precedenza magicamente è scomparso, l'ho cercato in tutto l'hd, ma niente..

Ora, il comando che uso per compilare è il seguente:
Codice:
gcc otello.c otello_main.c otello_cb.c  -o otello -lX11 -lforms -lXpm -lm -L/usr/X11R6/lib/
e l'errore che mi da:
Codice:
/tmp/ccogk0ty.o: In function `freeobject_handler':otello_cb.c:(.text+0x30): undefined reference to `mifreeobject_handle'
collect2: ld returned 1 exit status
infine ecco il codice del file in cui si trova "freeobject_handler":
Codice:
#include "forms.h"
#include "otello.h"
#include "mylibrary.h"

/*** callbacks and freeobj handles for form Otello ***/
int freeobject_handler(FL_OBJECT *ob, int ev, FL_Coord mx, FL_Coord my,int key, void *xev)
{
	return mifreeobject_handle(ob,  ev,  mx,  my, key, xev);
}
mylibrary.h:
Codice:
#ifndef mylibrary_h_
#define mylibrary_h_

char turno;
FL_COLOR c;

int mifreeobject_handle(FL_OBJECT *ob, int ev, FL_Coord mx, FL_Coord my,
			int key, void *xev);
#endif
mylibrary.c:
Codice:
#include <forms.h>
#include "otello.h"

char turno;
FL_COLOR c;

int mifreeobject_handle(FL_OBJECT *ob, int ev, FL_Coord mx, FL_Coord my,
			int key, void *xev){
int i;
short tmpx, tmpy, xc, yc;
FL_POINT raya[2];
   /* free obj handler code */
	
   for(i=1;i<=7;i++)
		fl_rectf(13,80+38*i,304,2, FL_BLACK);	
	for(i=1;i<8;i++)
		fl_rectf(13+38*i, 80, 2, 304, FL_BLACK);
	//printf("%d %d %d %d %d\n", ev, mx, my, ob->x, ob->y);
	if(ev==2){
		
	}	
   switch(ev)
   {
	case FL_PUSH:
	{
		tmpx=((my-80)/38);
		tmpy=((mx-13)/38);
		xc=80+tmpx*38+4;
		yc=13+tmpy*38+4;
		printf("%d %d: %d %d\t%d %d\n", tmpx, tmpy, xc, yc, mx, my);
		fl_ovalf(yc,xc,32,32,c);
		if(turno=='w'){
			turno='b';
			c=FL_BLACK;
		}
		else{
			turno='w';
			c=FL_WHITE;
		}
	}
	break;
	case FL_DRAW:
	{
		printf("...%d %d\n", FL_WHITE, FL_BLACK);
	}
	break;
	
   }
  return 0;
    
}
Spero che questi files possano bastare, ma se ne dovessero servire altri per capire l'errore chiedete pure...ribadisco, 5 ore fa con questa identica versione dei files funzionava tutto...e esisteva anche un eseguibile che è scomparso..come compilatore uso gcc...spero qualcuno mi possa dare una mano che ho i giorni contati x finire sto lavoro e avevo appena cominciato!

Grazie mille
ceccoggi è offline   Rispondi citando il messaggio o parte di esso