Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [c++] Linkaggio Visual Studio 2010

    Ciao a tutti, sono nuovo della programmazione in C++ e sto seguendo la guida C++ di questo sito. Utilizzo il compilatore Visual Studio 2010. Non riesco a capire come linkare i file, cioè, so che su linux con il compilatore gcc si creano dei file .o che contengono i metodi, io vorrei fare la stessa cosa su visual studio su windows. Leggendo in giro per visual i .o sono i .obj, ma non so come crearli. aggiungendo invece semplicemente al progetto un altro file .cpp come posso linkarlo al file che contiene il main?

    qualcuno mi potrebbe aiutare? grazie in anticipo

  2. #2
    Nel momento in cui usi un IDE non ti devi preoccupare di questi dettagli, se hai aggiunto correttamente i vari file al progetto ci penserà l'IDE a richiamare compilatore, linker e quant'altro per generare l'eseguibile finale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Sì infatti l'eseguibile si crea da solo correttamente... forse non mi sono spiegato bene

    Quando scrivo un programma in C++ vorrei procedere in questo modo: creo un file .cpp che contiene solo il main, poi un file d'intestazione .h contenente la classe e un altro file che contiene i metodi (visto che alcuni programmi ne hanno molti e quindi sono scomodi da tenere nel file .cpp che contiene il main). che estensione dovrebbe avere questo file? come faccio a linkarlo al file .cpp?

  4. #4
    Se ho capito bene deve avere .cpp come estensione.

    Esempio:
    Hai un main.cpp, una definizione di classe in class.h e l'implementazione della classe in un class.cpp. Nel main.cpp includerai l'header della classe(class.h) come anche in class.cpp.

  5. #5

    Se ho capito bene deve avere .cpp come estensione.

    Esempio:
    Hai un main.cpp, una definizione di classe in class.h e l'implementazione della classe in un class.cpp. Nel main.cpp includerai l'header della classe(class.h) come anche in class.cpp.
    Tu intendi questo vero?

    codice:
    //class.h
    
    class class {
             
            public:
            void metodo();
    
    ...
    
    }


    codice:
    //class.cpp
    
    #include "class.h" 
    
    void class::metodo {
    
    }
    
    ...
    codice:
    // main.cpp
    
    #include "class.h" 
    
    int main() {
    
    ...codice...
    
    
    return 0;
    }

    Ci avevo già provato ma non funziona... Credo che il problema sia del compilatore ma non so come risolverlo

  6. #6
    Originariamente inviato da Erosinho
    Ci avevo già provato ma non funziona... Credo che il problema sia del compilatore ma non so come risolverlo
    "Non funziona" non vuol dire niente... ottieni messaggi di errore? Quali?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Non penso sia il compilatore.
    Nel codice che hai postato l'errore sta nel nome della classe: class è una keyword, pertanto non può essere usato come nome della classe stessa.

  8. #8
    Ho fatto questa semplice prova

    codice:
    //main.cpp
    
    #include "stdafx.h"
    #include "classe.h"
    #include <iostream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	classe cla;
    	cla.metodo();
    
    	cin.get();
    	cin.get();
    	return 0;
    }
    codice:
    //classe.cpp
    
    #include "stdafx.h"
    #include "classe.h"
    #include <iostream>
    using namespace std;
    
    void classe::metodo () {
    	cin >> a;
    	cin >> b;
    	somma = a + b;
    	cout << somma;
    }
    codice:
    //classe.h
    
    class classe {
    
    public:
    	int a;
    	int b;
            int somma;
    	void metodo();
    
    }

    Mi dà questi errori:


    1>------ Inizio compilazione: Progetto: main, Configurazione: Debug Win32 ------
    1> main.cpp
    1>c:\program files\microsoft visual studio 10.0\vc\include\yvals.h(535): error C2143: errore di sintassi: ';' mancante prima di 'namespace'
    1> classe.cpp
    1>c:\program files\microsoft visual studio 10.0\vc\include\yvals.h(535): error C2143: errore di sintassi: ';' mancante prima di 'namespace'
    1> Generazione del codice in corso...
    ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
    Il punto è che io non ho incluso il file yvals.h, oltre al fatto che non lo posso modificare perchè è una libreria standard. Però ho notato che se non includo la libreria iostream non mi dà problemi. coma mai?

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Alla fine delle classe ci va il ;

    codice:
    
    class classe {
    
    public:
    	int a;
    	int b;
            int somma;
    	void metodo();
    
    }; 
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10

    [RISOLTO]

    Alla fine delle classe ci va il ;
    Grazie mille Alex'87 ho risolto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.