ceccoggi
25-01-2007, 03:12
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:
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:
/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":
#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:
#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:
#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! :cry:
Grazie mille
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:
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:
/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":
#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:
#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:
#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! :cry:
Grazie mille