View Full Version : Problemino con Dev-C++
17Qwerty71
17-02-2006, 14:37
Avrei da domandarvi alcune cose su questo compilatore.
Sto' facendo un progetto di un applicativo ed ovviamente il progetto l'ho diviso in più sorgenti.
Tengo ad essere piuttosto ordinato quindi ho creato un header contenente gli id dei control, una pagina .rs per ogni dialog da descrivere, una per il WinMain ed una per ogni Procedura di dialogo. Con quest'ultima ho dei problemi, nel senso che (ovviamente tutti i sorgenti vengono inclusi dove ne ho bisogno) quando vado a compilare, il compilatore non mi da nessun tipo di errore, ma la dialog non sembra comunicare con la procedura (come se non fosse presente). Strano perchè il compilatore non mi dà l'errore di funzione non definita :confused:
Se poi provo a cambiare il nome della funzione procedura, che verrà richiamata dalla dialog, nel parametro della funzione DialogBoxParam, ovviamente mi appare l'errore durante la compilazione di funzione non definita.
Se poi provo a rimettere il nome originale della funzione definita del file della procedura e ricompilo, la dialog torna a comunicare con la pocedura senza problemi.
Insomma, tutte le volte mi tocca fare questo processo perchè tutto va a buon fine :muro:
Spero si capisca qualcosa :stordita:
Un'altra domanda: come faccio ad includere un file .lib al progetto (passo per passo :stordita: )?
scusa come sarebbe che devi fare quel lavoro "tutte le volte"? tutte le volte quando? dopo che l'hai fatto una volta hai risolto... se il problema ti si ripresenta allora devi cercare di capire in quali casi succede, solo così puoi capire la causa.
per quanto riguarda il lib, prova a vedere se al MinGW gli va bene linkando in "stile Microsoft":
#pragma comment(lib, "nomefile.lib")
altrimenti devi semplicemente includerlo nella lista dei sorgenti da compilare che viene passata sulla linea di comando del MinGW (non so come si faccia nel Dev-C++, prova semplicemente ad aggiungere il file lib al progetto come fosse un file C).
ciao
17Qwerty71
17-02-2006, 18:38
scusa come sarebbe che devi fare quel lavoro "tutte le volte"? tutte le volte quando? dopo che l'hai fatto una volta hai risolto... se il problema ti si ripresenta allora devi cercare di capire in quali casi succede, solo così puoi capire la causa.
Praticamente tutte le volte che poi apporto una modifica alla procedure devo rifare quell'operazione, ovvero dagli come parametro alla DialogBoxParam una procedure che non esiste, compilare (con eventuale errore ovviamente), poi rimettere come parametro la procedure esistente.
per quanto riguarda il lib, prova a vedere se al MinGW gli va bene linkando in "stile Microsoft":
#pragma comment(lib, "nomefile.lib")
altrimenti devi semplicemente includerlo nella lista dei sorgenti da compilare che viene passata sulla linea di comando del MinGW (non so come si faccia nel Dev-C++, prova semplicemente ad aggiungere il file lib al progetto come fosse un file C).
ciao
Grazie, ora provo :)
17Qwerty71
17-02-2006, 19:03
Ho provato sia con il pragma che includendolo con l'include ma nulla :muro:
Quando aggiorni il nome della procedure, aggiorni sia il file sorgente (.cpp o .c) che il file header corrispondente (che contiene il suo prototipo)? Se non è così il compilatore ti dovrebbe dare errore :confused: , ma comunque credo sia questo il problema...
Per il secondo problema (ora non mi ricordo perfettamente, sto usando CodeBlocks che ti consiglio anche hehem :D ), nelle opzioni del tuo progetto, sotto linker, aggiungi
1) o il percorso relativo dalla tua directory alla directory del file .lib + il nome del file
2) oppure il nome del file .lib senza estensione nè il lib iniziale:
esempio, da "libcomctl32.a" a "comctl32", oppure da "libwinmm.a" a "winmm"
Ho provato sia con il pragma che includendolo con l'include ma nulla :muro: mi sono spiegato male: non devi includerlo con la direttiva #include, devi includerlo nel progetto nel senso che il Dev-C++ lo deve vedere come uno dei files da passare alla command line del compilatore; non so come si usa l'IDE di Dev-C++ perché non ce l'ho installato, comunque devi fare la stessa cosa di quando aggiungi al tuo progetto un nuovo file sorgente (.c o .cpp); per esempio, in Visual C++ 6 sulla sinistra c'è un frame che contiene delle pseudo cartelle dove mettere i sorgenti, gli headers, le risorse, ecc.; in Visual C++ 6 hai due modi per linkarti a un lib: o usi pragma, oppure fai click destro sulla pseudocartella dei sorgenti, fai "Add files to folder...", e navighi nelle directories finché non trovi il lib in questione.
non so come spiegartelo meglio perché ripeto che non uso Dev-C++, comunque ora che mi viene in mente potresti anche provare a mettere quel lib nella command line dalle opzioni dell'IDE: prova tra le opzioni di linking...
17Qwerty71
18-02-2006, 06:52
mi sono spiegato male: non devi includerlo con la direttiva #include, devi includerlo nel progetto nel senso che il Dev-C++ lo deve vedere come uno dei files da passare alla command line del compilatore; non so come si usa l'IDE di Dev-C++ perché non ce l'ho installato, comunque devi fare la stessa cosa di quando aggiungi al tuo progetto un nuovo file sorgente (.c o .cpp); per esempio, in Visual C++ 6 sulla sinistra c'è un frame che contiene delle pseudo cartelle dove mettere i sorgenti, gli headers, le risorse, ecc.; in Visual C++ 6 hai due modi per linkarti a un lib: o usi pragma, oppure fai click destro sulla pseudocartella dei sorgenti, fai "Add files to folder...", e navighi nelle directories finché non trovi il lib in questione.
non so come spiegartelo meglio perché ripeto che non uso Dev-C++, comunque ora che mi viene in mente potresti anche provare a mettere quel lib nella command line dalle opzioni dell'IDE: prova tra le opzioni di linking...
Ho provato ad inserirlo nel progetto, ma nulla
Sono andato anche in Opzioni del Progetto->Scheda Parametri->Linker e ho fatto Aggiungi Libreria o oggetto ma non funzia ugualmente :muro:
17Qwerty71
18-02-2006, 07:09
Ho scoperto che se cancello (prima di compilare) i file oggetto che aveva creato precedentemente (alla compilazione precedente) mi riconosce le modifiche al file con la procedure :muro:
Sembra quasi che non aggiorni il file oggetto della procedure :confused:
Sapete come risolvere invece di andare ogni volta a cancellare tali file? :mbe:
17Qwerty71
18-02-2006, 08:07
Ho scoperto che se cancello (prima di compilare) i file oggetto che aveva creato precedentemente (alla compilazione precedente) mi riconosce le modifiche al file con la procedure :muro:
Sembra quasi che non aggiorni il file oggetto della procedure :confused:
Sapete come risolvere invece di andare ogni volta a cancellare tali file? :mbe:
Ho risolto installando CodeBlocks :)
Ho scoperto che se cancello (prima di compilare) i file oggetto che aveva creato precedentemente (alla compilazione precedente) mi riconosce le modifiche al file con la procedure :muro:
Sembra quasi che non aggiorni il file oggetto della procedure :confused:
Sapete come risolvere invece di andare ogni volta a cancellare tali file? :mbe:
Potresti fare ogni volta un "Rebuild all" così che ti recompili tutti i file cancellando allo stesso tempo i file object..
Ma questo lo fai?
Quando aggiorni il nome della procedure, aggiorni sia il file sorgente (.cpp o .c) che il file header corrispondente (che contiene il suo prototipo)?
17Qwerty71
18-02-2006, 10:56
Potresti fare ogni volta un "Rebuild all" così che ti recompili tutti i file cancellando allo stesso tempo i file object..
Grazie, ma ormai mi sono affezionato a CodeBlocks :stordita:
Ma questo lo fai?
Ovviamente salvo tutti i file (che poi mi pare che li salvi lui in automatico prima di compilare il progetto) :)
Ho provato ad inserirlo nel progetto, ma nulla
Sono andato anche in Opzioni del Progetto->Scheda Parametri->Linker e ho fatto Aggiungi Libreria o oggetto ma non funzia ugualmente :muro: ecco, questo è strano... :confused:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.