PDA

Visualizza la versione completa : [C] undefined references to 'memcpy'


robboso
24-07-2008, 21:04
ciao a tutti




typedef struct {
U32 entry_hi;
U32 cause;
U32 status;
U32 pc_epc; /* pc in the new area, epc in the old area */
U32 gpr[31];
U32 hi;
U32 lo;
} state_t;


typedef struct tcb_t { /* thread control block */
tid_t tid; /* thread identifier */
status_t status; /* thread's status */
state_t proc_state; /* processor state */
struct tcb_t *t_next, /* pointer to next entry in the thread queue */
*t_prev, /* pointer to next entry in the thread queue */
*inbox; /* threads waiting to send a message to this thread */

} tcb_t;



static state_t GetTState(tid_t tid)
{
tcb_t *tmp;
state_t stato;

if(tid == 255)
tid=CurrentThread->tid;
tmp=resolveTid(tid); /* questa funzione prende un tid e ritorna un puntatore al thread block tcb_t*/
if(tmp != NULL){
stato=tmp->proc_state;
return stato;
}
else killTcb(tid); /* termina il tcb_t corrispondente a tid*/
}




in fase di compilazione ho questo errore:

ssi.o(.text+0xd04): In function `GetTState':
: undefined reference to `memcpy'
ssi.o(.text+0xd2c): In function `GetTState':
: undefined reference to `memcpy'

io non faccio nessuna chiamata memcpy

qualcuno di cosa si tratta???

menphisx
24-07-2008, 22:20
Sei sicuro che il codice sorgente postato, corrisponda a quello vero ?

robboso
24-07-2008, 22:39
si si proprio lui.

oregon
24-07-2008, 22:41
Ma in quale ambiente/IDE/compilatore stai lavorando ?

Con quale tipo di progetto?

Quali #include hai usato?

Con quali (eventuali) librerie hai compilato?

Quale riga di comando usi (eventualmente) per compilare?

robboso
24-07-2008, 22:53
un progetto di sistemi operativi, un micro kernel per uMPS...
e sono sicuro che in nessuna delle mie funzioni o negli include ci sia una chiamata a memcpy.

ho provato pure a fare una ricerca all'interno della cartella, dove si trova il progetto, e memcpy risulta in un file
.o (ssi.o), ovviamente un file object e non si pu vedere.

menphisx
24-07-2008, 23:15
Con COSA compili ?
Che AMBIENTE utilizzi ?
Lavori su Windows, Linux, Macintosh ?
Dato che un microkernel non utilizzerete la libreria standard, ergo memcpy non pu esistere, ergo
l'errore corretto. Problema non c' nessuna chiamata a memcpy :confused:
Dato che ti da errore di linking significa che memcpy pero dichiarata da qualche parte ? Controllato gli header che hai incluso ?
Non puoi POSTARE tutto il codice completo, o ALMENO relativo al problema ?

:ciauz:

MacApp
25-07-2008, 04:10
prova a definirti una memcpy "farlocca",giusto per vedere se il problema solo quello.

Loading