PDA

Visualizza la versione completa : [C] ModalitÓ di inclusione delle librerie


emi81
10-05-2007, 16:14
ho due classi che includo alcune librerie.
se le compilo singolarmente non mi da nessun errore.

se buildo tutto assieme mi da errori : already defined in Main.obj

come faccio a dire che se una libreria Ŕ gia stata caricata allora non deve ricaricarla ?


Grazie a tutti!

oregon
10-05-2007, 16:21
Mostra il codice ... suppongo che parli di file include (.h) non di librerie ...

emi81
10-05-2007, 16:36
scusa, hai ragione.

sono file .h, mi sono sbagliato.


per l'esattezza ho visto che Ŕ un solo file header che mi da errore se lo includo in enrtambe le classi.

all'interno del file definisco delle funzioni.

oregon
10-05-2007, 16:37
Ti avevod detto ... mostra il codice ...

emi81
10-05-2007, 16:47
main :



include "def_function.h"
include "example.h"




class example :



include "def_function.h"
include "example.h"



def_function.h :



typedef int (WINAPI* LP_Open) (arg1,arg2);
typedef int (WINAPI* LP_Close) (arg1) ;

LP_Open Open;
LP_Close Close;


la typedef posso farla quanto voglio, ma non posso definire due volte i puntatori..

non c'Ŕ una specie di ifndef per gli include ?

oregon
10-05-2007, 17:04
Questo deve essere def_function.h :



#ifndef DEF_FUNCTION_H
#define DEF_FUNCTION_H

typedef int (WINAPI* LP_Open) (arg1,arg2);
typedef int (WINAPI* LP_Close) (arg1) ;

LP_Open Open;
LP_Close Close;

#endif


e in maniera simile dovrebbe essere example.h (che non hai mostrato ...)

alka
10-05-2007, 17:17
Il linguaggio anche nel titolo, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887): questo l'ho corretto io.

emi81
10-05-2007, 17:49
ho provato a fare come mi hai detto

#ifndef DEF_FUNCTION_H
#define DEF_FUNCTION_H

typedef int (WINAPI* LP_Open) (arg1,arg2);
typedef int (WINAPI* LP_Close) (arg1) ;

LP_Open Open;
LP_Close Close;

#endif

ma non funziona. continua a darmi lo stesso errore: gia definito in main.obj

non gli va bene la definizione dei puntatori.. l'altro file .h non mi da nessun prob, per quello non ho postato il codice

oregon
10-05-2007, 17:55
Ti ho detto di farlo anche per la example.h ...

E poi, l'errore di cosa parla esattamente ...?

emi81
10-05-2007, 18:01
in example.h c'Ŕ gia #ifndef (etc.)

l'errore che mi da Ŕ :



Example.obj : error LNK2005: "int (__stdcall* Open)(struct arg1 *,arg2 *)" ?Open@@3P6GHPAUHWND__@@PAKPAD222PAG@ZA) already defined in Main.obj

Loading