undefined reference to



  • Enno schrieb:

    dann fehlt mir da was in der cmakelist.txt richtig?

    Was steht denn in deiner cmakelist.txt? Meine Kristallkugel ist gerade in der Werkstatt.



  • cmake_minimum_required(VERSION 2.8.7)
    project(CPU)
    
    set(CPU_VERSION_MAJOR 1)
    set(CPU_VERSION_MINOR 0)
    
    add_executable(CPU cpumain.cpp)
    

    und meine header:

    #ifndef CPU_H
    #define CPU_H
    
    class HTML_File 
    { 
    private: 
      std::string data;  
    public: 
    
      void add_verbatim(std::istream& in); 
      void add_text(const char *in); 
      std::string to_string();
    
    };  
    #endif
    


  • Enno schrieb:

    add_executable(CPU cpumain.cpp)

    Was ist denn cpumain.cpp? Die hast du vorher nicht erwähnt.

    Wie auch immer, in diese runde Klammer müssen alle .cpp-Dateien, die zum Programm gehören.



  • Da fehlt übrigens ein #include <string> in deinem Header über der Klassendefinition.

    Schau mal in ein Grundlagenbuch über C++ deiner Wahl nach, wie das mit der getrennten Übersetzung und der ODR (one definition rule) funktioniert.



  • ups entschuldige
    ich hab meine datei eben umbenannt zu besseren übersicht

    hab nun:
    cpumain.cpp
    cpu.h
    cpu.cpp

    d.h. nun muss ich die cpu.cpp auch da mit rein machen? also
    add_executable(CPU cpumain.cpp, cpu.cpp)???



  • Enno schrieb:

    d.h. nun muss ich die cpu.cpp auch da mit rein machen? also
    add_executable(CPU cpumain.cpp, cpu.cpp)???

    Ja sicher! ...wobei da glaub'ich kein Komma hinkommt.



  • yeah das hat geholfen 😃

    kommt das nächste problem:

    /home/praktikant/kernelstat/cpu.cpp: In Funktion »void add_verbatim(std::istream&)«:
    /home/praktikant/kernelstat/cpu.cpp:8:5: Fehler: »data« wurde in diesem Gültigkeitsbereich nicht definiert
    

    hab auch schon probiert das std::string data; in public mit rein zu hauen geht auch nicht

    class HTML_File 
    { 
    private: 
      std::string data;  
    public: 
    
      void add_verbatim(std::istream& in); 
      void add_text(const char *in); 
      std::string to_string();
    
    };
    
    #include <fstream> 
    #include <iostream> 
    #include <ostream>
    #include <string> 
    #include "cpu.h"
    
      void add_verbatim(std::istream& in) {
        data += "<pre>"; 
        char c; 
        while(in.get(c)) 
          if (c == '<') data += "&lt"; 
          else 
            if (c == '>') data += "&gt"; 
            else 
              data += c; 
        data += "</pre>"; 
      } 
    
      void add_text(const char *in) { 
        data += in; 
      } 
    
      std::string to_string(){ 
        std::string out = 
          "<!DOCTYPE html>\n<html><body>" 
          + data 
          + "</body></html>\n"; 
        return out; 
      }
    

    oder muss ich hier nochmal

    char data
    

    einfügen?



  • void HTML_File::add_verbatim(std::istream& in) {
    ...
    


  • wow danke 🙂

    nur wie mach ich es heir mit?

    std::string to_string(){
    

    schreib ich HTML_File davor bekomm ich ein fehler



  • ok bin dumm xD hat sich erledigt


Anmelden zum Antworten