Repository 32bit  Forum
Repository 64bit  Wiki

Compilazione C++

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Compilazione C++

Messaggioda Absolut » mar set 01, 2009 8:23

Salve ragazzi,
ho una domanda circa la compilazione di alcuni file. Questi dovrebbero essere stati scritti in C++. L'autore che gentilmente me li ha inviati mi ha scritto:

The files main (.cpp), network(.h,.cpp) and LinkList(.h) need to be compiled and linked together.


come devo procedere esattamente!?

vi ringrazio!
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda mcosta » mar set 01, 2009 9:08

Prova con

Codice: Seleziona tutto
g++ -o my_program main.cpp network.cpp


che, a meno di errori di compilazione, dovrebbe generare l'eseguibile "my_program"
Avatar utente
mcosta
Linux 1.0
Linux 1.0
 
Messaggi: 54
Iscritto il: mar giu 15, 2004 0:00
Località: Marano (NA)
Nome Cognome: Massimo Costa
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: KDE 4.2.4

Re: Compilazione C++

Messaggioda Absolut » mar set 01, 2009 18:41

ok grazie!!

mi accorgo di una cosa: quando poi lancio l'eseguibile ho un problema di

*** stack smashing detected ***

se metto in fase di compilazione:
-fno-stack-protector

non ce l'ho.

è una cosa corretta secondo voi!?

grazie!
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda Absolut » mer set 02, 2009 19:38

scusate ragazzi, l'autore di un codice C++ mi ha mandato i sorgenti.
e mi dice:

The files main (.cpp), network(.h,.cpp) and LinkList(.h) need to be
compiled and linked together.

come devo procedere alal compilazione!?

g++ ........!?!?!

metto solo i cpp o anche i .h!?

grazie!
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda mcosta » mer set 02, 2009 20:12

Absolut ha scritto:g++ ........!?!?!

metto solo i cpp o anche i .h!?


Devi compilare i soli *.cpp. (Se il codice è scritto rispettando le regole fondamentali).
Avatar utente
mcosta
Linux 1.0
Linux 1.0
 
Messaggi: 54
Iscritto il: mar giu 15, 2004 0:00
Località: Marano (NA)
Nome Cognome: Massimo Costa
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: KDE 4.2.4

Re: Compilazione C++

Messaggioda Absolut » mer set 02, 2009 22:39

Ok... credo di avere un problema!

il codice viene lanciato con un comanto

./prova nomefile.fat opzioni

Se come nome file metto il file che ho per testare il programma, ok, legge quello che c'è scritto direttamente.

Se però creo un file txt e poi lo rinomino in .dat e glielo faccio leggere, allora non legge bene le cose!

come mai!?

thanks!
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda mcosta » gio set 03, 2009 9:29

Una domanda semplice: "Quanto ne sai di C++?"
Il problema sembra a questo punto nella logica dell'applicazione e quindi per trovare la risposta alla tua domanda dovresti studiarti il codice.
Se si tratta di un software di analisi testo potrebbe essere legato alla codifica del ritorno a capo.
Avatar utente
mcosta
Linux 1.0
Linux 1.0
 
Messaggi: 54
Iscritto il: mar giu 15, 2004 0:00
Località: Marano (NA)
Nome Cognome: Massimo Costa
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: KDE 4.2.4

Re: Compilazione C++

Messaggioda Absolut » gio set 03, 2009 19:45

Ok.. pian piano risolvo!

Ora ho un problema nel printare l'output su un file:

il codice presente non funziona:
void Network::generatePathFile()
{
//To output the paths into a separate file
ofstream PathFile("paths.dat",ios::app);

//Writing Paths into a File
for (int i=0; i<nNumDemands; i++)
{
cout << "(" << nDemandList[i].nSrc << ", " << nDemandList[i].nDest << ")" << " >";
nDemandList[i].nNominalPathPool->print();
}
cout <<"*******************************************************************************"<<endl;
PathFile.close();

}



cosa non va secondo voi!?

il file path.dat lo crea ma è vuoto
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda Absolut » gio set 03, 2009 19:53

ok in un altro file sorgente ho trovato questa struttura:
Codice: Seleziona tutto
   void print(ofstream & out, int j)
   {
      struct node* temp = this->head;
      if( j <= this->size)
      {
         while( j!= 1)
         {
            temp=temp->next;
            j--;
         }
         out << "Paths " << temp->path->nId << " : ( Cost : " << temp->path->fCost << ") - ( with flow " <<temp->path->xval <<" )";
         for(int i=0; i<temp->path->nNumEdges; i++)
            out << temp->path->nEdgeList[i] << " ";
         out << "} " <<  endl;
      }   
   }
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current

Re: Compilazione C++

Messaggioda Absolut » gio set 03, 2009 21:57

c'è anche questa struttura.

Codice: Seleziona tutto
   void print()
   {
      struct node* temp = this->head;
      cout<<" Paths :[ ";
      while(temp != NULL)
      {
         cout << "(" << temp->path->fCost << "): {";
         for(int i=0; i<temp->path->nNumEdges; i++)
            cout << temp->path->nEdgeList[i] << " ";
         cout << "}, "<<endl;
         temp=temp->next;
      }
      cout<<" ]"<<endl;
   }


Se lascio nel codice solo print()
stampa le cose a video, ma non nel file.

per questo credo si debba usare print(ofstream & out, int j)

ma non so come si usa!?

please help me!

thanks!
Avatar utente
Absolut
Linux 3.x
Linux 3.x
 
Messaggi: 1465
Iscritto il: gio feb 10, 2005 1:00
Località: Roma
Slackware: current


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite