PDA

View Full Version : problema ccc_win.h in c++ (programmi grafici)


DarkAnsem
03-04-2011, 14:00
Buongiorno ragazzi, mi sto preparando all'esame di fondamenti di informatica 1 di ingegneria elettronica sul c++, utilizzo il libro Fondamenti di C++ di Cay Horstmann.

ho riscontrato dei problemi nel capitolo 3, per poter creare i programmi grafici, mi sono scaricato il file zip dal sito del libro, il file codice.zip, questo zip contiene i codici di tutti i programmi di esempio del libro, gli header e le librerie grafiche create per l'occasione, solamente non funziona, vi spiego, ho messo nella cartella include di codeblocks (programma che devo utiizzare per il corso e l'esame) tutti gli header .h e i file .cpp(dovrebbero essere le librerie compilate dei file .h) contenuti nella cartella cccfiles del file zip codice.zip


però ho un problema con l'header ccc_win.h che è l'unico che non ha il suo corrispettivo ccc_win.cpp e non so per quale motivo qualsiasi programma di esempio che sta sul libro che utilizza questo header ripetendolo su codeblocks non funziona.

il programma è:

#include "ccc_win.h"

int ccc_win_main()
{
Point p(1, 3);
Point q = p;
Point r = p;
q.move(0, 1);
r.move(1, 0);
Line s(p, q);
Line t(p, r);
cwin << s << t;
s.move(1, 0);
t.move(0, 1);
cwin << s << t;

return 0;
}

questo programma dovrebbe raffigurare un quadrato invece crea i seguenti errori di compilazione:

obj\Debug\main.o||In function `Z12ccc_win_mainv':|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|7|undefined reference to `Point::Point(double, double)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|10|undefined reference to `Point::move(double, double)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|11|undefined reference to `Point::move(double, double)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|12|undefined reference to `Line::Line(Point, Point)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|13|undefined reference to `Line::Line(Point, Point)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|14|undefined reference to `cwin'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|14|undefined reference to `GraphicWindow::operator<<(Line)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|14|undefined reference to `GraphicWindow::operator<<(Line)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|15|undefined reference to `Line::move(double, double)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|16|undefined reference to `Line::move(double, double)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|17|undefined reference to `cwin'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|17|undefined reference to `GraphicWindow::operator<<(Line)'|
C:\Users\Stefano\Documents\programmi c++\quad\main.cpp|17|undefined reference to `GraphicWindow::operator<<(Line)'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16'|
||=== Build finished: 14 errors, 0 warnings ===|

Ma perchè? Quali sono i passi precisi per integrare gli header(soprattutto questo header grafico) e le librerie grafiche date sul sito del libro? perchè mettendo il tutto nella cartella include mi da errori.

(PS ho provato ad inserire in include ccc_win.cpp trovato sul sito inglese del libro, cosi facendo gli errori citati prima non ci sono perchè forse trova le informazioni mancanti in questo file però mi escono tantissimi altri errori collegati ad altri file come ccc_ansi.cpp ecc che sono altri file sempre del sito inglese non compresi nel file zip codice.zip italiano e quindi comunque il programma e suoi annessi con lo stesso header non partono.

Rimango in attesa di un vostro aiuto, perchè son rimasto bloccato qui, al capitolo 3 su programmi grafici, sono 3 giorni che ci sbatto la testa, grazie mille in anticipo.

Tanti Saluti.

DarkAnsem
04-04-2011, 00:18
Nessuno che può aiutarmi? Sono in stallo ho bisogno di voi!!! :P

DarkAnsem
04-04-2011, 18:29
up

DarkAnsem
05-04-2011, 02:00
up.......

DarkAnsem
05-04-2011, 12:07
Possibile che non ci sia nessuno tanto preparato da avere le conoscenze informatiche di c++ per potermi rispondere e risolvere questo problema?

vi prego ho un esame a breve, aiutatemi...:(

wingman87
05-04-2011, 13:32
Ho scaricato i file del libro e li ho compilati su windows con mingw. Ti spiego come ho fatto con un esempio.

Compiliamo l'esempio line.cpp del capitolo 3:
Ti servono i seguenti file:
ccc_msw.cpp
ccc_msw.h
ccc_shap.cpp
ccc_shap.h
ccc_win.h
line.cpp

Li metti nella stessa cartella e da prompt esegui:
g++ -c *.cpp
g++ *.o -lgdi32

Otterrai così l'eseguibile a.exe.

Spero ti sia servito, ciao!

DarkAnsem
05-04-2011, 16:43
Cosi mi da errore di script console, io all'esame devo usare codeblocks, potresti dirmi quale è il procedimento per compilare e far funzionare il programma quadrato da me scritto?

grazie mille.

wingman87
05-04-2011, 18:02
Che errore ti da? Sei su windows anche tu? Il tuo compilatore è mingw?

Da codeblocks penso che tu debba andare nelle opzioni del compilatore, poi andare nella scheda del linker e tra le librerie da linkare aggiungere libgdi32.a che dovresti trovare nella cartella lib di mingw.

DarkAnsem
05-04-2011, 19:53
fatto ma niente, ecco gli errori:

Welcome to the script console!
> g++ -c *.cpp
ScriptConsole line = (1) column = (9) : error expression expected
ScriptConsole line = (1) column = (9) : error expression expected

wingman87
05-04-2011, 20:59
Ok, allora fai così, partiamo da zero.
- Crea un nuovo progetto "Win32 GUI project"
- Elimina il file main che si è creato di default
- Inserisci nel progetto i file che ho elencato prima
- Compila ed Esegui
Così dovrebbe andare (a me va). Non devi neanche aggiungere la libreria libgdi32 al linker perché creando quel tipo di progetto lo fa già di default.