PDA

View Full Version : Problema di Esecuzione in C++


Prometeo98
11-03-2004, 11:02
Salve,

ho un problema in C++ che non riesco a capire da cosa possa essere causato!
Praticamente uso la piattaforma di programmazione Microsoft Visual C++ 6.0 (aggiornata).

Ho scritto questo semplice programma, aggiunge alla var tipo Time, wake-up un dato nummero di secondi, ecco il prog:

#include <iostream>

using namespace std;

#include "ccc_time.h"

int main()
{
Time wake_up(9, 0, 0);
wake_up.add_seconds(1000);
/* mille secondi dopo */
cout << wake_up.get_hours()
<< ":" << wake_up.get_minutes()
<< ":" << wake_up.get_seconds() << "\n";

return 0;
}

Quando vado a fare compile non mi dà nessun errore:
--------------------Configuration: Time - Win32 Debug--------------------
Compiling...
Time.cpp

Time.obj - 0 error(s), 0 warning(s)

Il Problema sorge ora ovvero nel momento dell'esecuzione, infatti quando vado a fare l'Execute Program ecco cosa mi dà nel build:
--------------------Configuration: Time - Win32 Debug--------------------
Linking...
Time.obj : error LNK2001: unresolved external symbol "public: int __thiscall Time::get_hours(void)const " (?get_hours@Time@@QBEHXZ)
Time.obj : error LNK2001: unresolved external symbol "public: int __thiscall Time::get_minutes(void)const " (?get_minutes@Time@@QBEHXZ)
Time.obj : error LNK2001: unresolved external symbol "public: int __thiscall Time::get_seconds(void)const " (?get_seconds@Time@@QBEHXZ)
Time.obj : error LNK2001: unresolved external symbol "public: void __thiscall Time::add_seconds(int)" (?add_seconds@Time@@QAEXH@Z)
Time.obj : error LNK2001: unresolved external symbol "public: __thiscall Time::Time(int,int,int)" (??0Time@@QAE@HHH@Z)
Debug/Time.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.

Time.exe - 6 error(s), 0 warning(s)


Tengo a precisare che le due librerie che vengono usate sono presenti nei miei file include.

Aiutatemi, quale puo essere la causa, e l'eventuale soluzione?

Grazie!:cry:

khamel
11-03-2004, 13:22
dovresti provare a guardare nelle opzioni di progetto, di solito quell'errore in fase di link lo da se certe librerie non sono linkate al progetto, non basta che siano nelle cartelle delle librerie di c++ e che siano incluse all'inizio del file tramite #include ...

ri
11-03-2004, 13:37
hai aggiunto il .cpp associato a ccc_time.h al progetto, vero?

Prometeo98
11-03-2004, 13:58
Originariamente inviato da khamel
dovresti provare a guardare nelle opzioni di progetto, di solito quell'errore in fase di link lo da se certe librerie non sono linkate al progetto, non basta che siano nelle cartelle delle librerie di c++ e che siano incluse all'inizio del file tramite #include ...

Cosa significa, che devo fare?:confused:

Originariamente inviato da ri
hai aggiunto il .cpp associato a ccc_time.h al progetto, vero?

Si l'ho fatto!

khamel
11-03-2004, 14:08
significa che se questo file h che tu includi necessita di librerie (*.lib) queste vanno messe nella cartella lib del compilatore e a progetto aperto, apri le opzioni di progetto dal menu di visual studio (project->option mi sembra), trovi una scheda chiamata "link" con dentro una casella di testo con un sacco di nomi *.lib, tu in fondo a quetso elenco aggiungi anche il tuo se no il progetto non vede da solo le librerie nella cartella del compilatore

Prometeo98
11-03-2004, 14:32
Ho fatto come mi hai detto ora mi dà questo errore nell'execute build:

--------------------Configuration: Time - Win32 Debug--------------------
Linking...
LINK : fatal error LNK1104: cannot open file "ccc_time.lib"
Error executing link.exe.

Time.exe - 1 error(s), 0 warning(s)


:confused: Che è successo?
E' migliorata la situazione?

khamel
11-03-2004, 14:56
controlla prima di tutto che il file .lib sia nella cartella lib del compilatore,
per esempio
C:\[Program Files Folder]\Microsoft VisualStudio\VC98\Lib

e che nella cartella system di winzozz ci sia lo stesso file però .dll se no non va niente...

inoltre il file .h deve stare qua :

C:\[Program Files Folder]\Microsoft Visual Studio\VC98\Include

prova poi fammi sapere

Prometeo98
11-03-2004, 15:04
-Il file .lib non cè nella cartella lib del compilatore!

-Qui: C:\WINDOWS\system, non cè il .dll

-Qui: C:\Programmi\Microsoft Visual Studio\VC98\Include, cè sia ccc_time.h che ccc_time.cpp, (ce li ho messi io entrambi e credevo che bastassero)

Che pensi?:confused:

khamel
11-03-2004, 17:45
partiamo da zero :
dove hai preso ccc_time.h e ccc_time.cpp ?
roba fatta da te?

-Il file .lib non cè nella cartella lib del compilatore!

se di questa libreria hai i sorgenti apri il file di progetto .dsw
vai sul menu build e fate click su build ccc_time.lib.
vai nella cartella di progetto prendi il file.lib e lo copi nella cartella del compilatore

se non hai i sorgenti non saprei..
bisogna che ci do un occhiata...
mi posti il .cpp e il .h in pvt?

Prometeo98
11-03-2004, 17:54
Io stò seguendo un libro chiamato "Fondamenti di C++" di Cay Horstmann della McGrawHill.

Cè lesercizio che ho riportato sopra che comporta questa libreria TIME, allora dato che non è una lib. standad, l'ho dovuta scaricare dal sito del libro, e mi sono stati dati i due file, ccc_time.h e ccc_time.ccp, e questi li ho messi nella cartella Include! Quindi (purtroppo) non è roba fatta da me!

Ora metto i file!

Ti ringrazio di cuore, per la tua diponibilità!
GRAZIE!

Prometeo98
11-03-2004, 18:07
Ecco i file:

Scusa ma non sono riuscito a mettere l'allegato nei PVT!

khamel
11-03-2004, 19:10
ok dovrei aver risolto...

1-Apri visual studio e fai New project
2-Crea una Win32 Static Library (come nome puoi mettere per esempio time) lasciando tutte le opzioni come ti dice lui
3-Con Add File to project gli aggiungi i due file .cpp e .h che mi hai mandato
4-Nel menu build fai Build "time.lib"
5-Salva e chiudi tutto

6-Nella cartella del progetto nella sottocartella Debug trovi time.lib lo copi e lo incolli nella dir Lib del compilatore
7-Copi e incolli i due file .cpp e .h nella dir Include

8-Apri il progetto del tuo prog che hai postato
9-Nel menu project->settings alla linguetta links aggiungi in fondo time.lib
10-Rebuil All

da me cosi va....

Prometeo98
11-03-2004, 20:18
Ok! Grazie! Ti farò sapere!;)

Prometeo98
11-03-2004, 21:25
Scusami nel momento in cui vado a fare build "time.lib" mi dà questo errore:
--------------------Configuration: time - Win32 Debug--------------------
Compiling...
ccc_time.cpp
c:\documents and settings\codici libro c. h\codice\cccfiles\ccc_time.cpp(4) : error C2871: 'std' : does not exist or is not a namespace
Error executing cl.exe.

time.lib - 1 error(s), 0 warning(s)

Cosa può essere?

cionci
12-03-2004, 00:49
Perchè creare il .lib ?!?!?!?

Ti fai un progetto...e metti in "include files" ccc_time.h... In source file ccc_time.cpp... Poi crei il tuo file .cpp in source file e ci metti il main e tutto il codice che vuoi...compile e sei a cavallo...

khamel
12-03-2004, 08:03
giusto perchè se deve fare altri prog almeno ha la libreria in memoria e non deve stare ad aggiungere il file al progetto tutte le volte...

però puoi anche fare cosi....

Cosa può essere?

me lo faceva anche a me però tu mi avevi detto che a te compilava senza errori e io l'ho commentato giusto per provare se ti riuscivo a eliminare l'errore di cui parlavi all'inizio...