Multiple definitions

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: Multiple definitions

Beitrag von naums » Do Jan 14, 2010 9:10 pm

ich machs mal auszugsweise: console.cpp:

Code: Alles auswählen

    void writehead(std::string header, std::string filepath)
    {
        FILE *ini;
        ini=fopen(filepath.c_str(),"t");
        fprintf(ini,header.c_str());
        fclose(ini);
    }
main.cpp (Console.h ist eingefügt (nein ich habe mich nicht verschrieben))

Code: Alles auswählen

´int main()                                                                      //Das eigentliche hauptprogramm, dient nur zur Ausgabe der Lizenzinfos, und zum Starten der UPDATE Prozedur
{
    //Linux test INI Writing//
    string head = "Hallo, test";
    string file = "/media/Data/ini.ini";
    writehead(head, file);


.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Multiple definitions

Beitrag von Dirty Oerti » Do Jan 14, 2010 10:17 pm

Zwischenfrage:
Warum benutzt du eigentlich C-Filestreams wenn du in C++ schreibst?

Dann: Auszugsweise wird uns wahrscheinlich wenig bringen. Noch dazu ohne das du uns eine ordentliche Angabe der Fehlermeldung gibst.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Multiple definitions

Beitrag von Xin » Do Jan 14, 2010 10:21 pm

naums hat geschrieben:ich machs mal auszugsweise: console.cpp:

Code: Alles auswählen

        ini=fopen(filepath.c_str(),"t");
Was ist "t"?
Dirty Oerti hat geschrieben:Zwischenfrage:
Warum benutzt du eigentlich C-Filestreams wenn du in C++ schreibst?
Warum nicht, wenn's ihm gefällt - ich benutze meistens auch C-Filestreams. ^^
Dirty Oerti hat geschrieben:Dann: Auszugsweise wird uns wahrscheinlich wenig bringen. Noch dazu ohne das du uns eine ordentliche Angabe der Fehlermeldung gibst.
Hat er doch: "Segmentation fault." ^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Multiple definitions

Beitrag von Dirty Oerti » Do Jan 14, 2010 10:24 pm

Xin hat geschrieben:
naums hat geschrieben:ich machs mal auszugsweise: console.cpp:

Code: Alles auswählen

        ini=fopen(filepath.c_str(),"t");
Was ist "t"?
Hatte ich mich auch schon gefragt, aber gedacht, dass ich es einfach nur nicht kenne. Aber anscheinend ist es doch eher unbekannt?
Xin hat geschrieben:
Dirty Oerti hat geschrieben:Zwischenfrage:
Warum benutzt du eigentlich C-Filestreams wenn du in C++ schreibst?
Warum nicht, wenn's ihm gefällt - ich benutze meistens auch C-Filestreams. ^^
Naja, wie es halt gefällt. Wer meint, sich damit quälen zu müssen ;) :-P
Im Endeffekt ist es ja vollkommen "Wurst" ...
Xin hat geschrieben:
Dirty Oerti hat geschrieben:Dann: Auszugsweise wird uns wahrscheinlich wenig bringen. Noch dazu ohne das du uns eine ordentliche Angabe der Fehlermeldung gibst.
Hat er doch: "Segmentation fault." ^
Ja, aber ohne das komplette Programm kann man das Programm nicht testweise durchlaufen lassen und somit nicht selbst eingrenzen, an welcher Stelle der Segmentation Fault auftritt. Und da ich keine Angabe bekomme, wo der Segmentation Fault auftritt wird es schwer werden, ihn zu eliminieren :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Multiple definitions

Beitrag von Xin » Do Jan 14, 2010 10:42 pm

Dirty Oerti hat geschrieben:
Xin hat geschrieben:
naums hat geschrieben:ich machs mal auszugsweise: console.cpp:

Code: Alles auswählen

        ini=fopen(filepath.c_str(),"t");
Was ist "t"?
Hatte ich mich auch schon gefragt, aber gedacht, dass ich es einfach nur nicht kenne. Aber anscheinend ist es doch eher unbekannt?
Ich vermute einfach, dass "t" neben "r" liegt ^^
Dirty Oerti hat geschrieben:
Xin hat geschrieben:Warum nicht, wenn's ihm gefällt - ich benutze meistens auch C-Filestreams. ^^
Naja, wie es halt gefällt. Wer meint, sich damit quälen zu müssen ;) :-P
Im Endeffekt ist es ja vollkommen "Wurst" ...
Die iostreams benutzen auch Filestreams. Und ich muss sagen, dass ich mich gar nicht von Filestreams gequält fühle.
Dirty Oerti hat geschrieben:
Xin hat geschrieben:"Segmentation fault." ^
Ja, aber ohne das komplette Programm kann man das Programm nicht testweise durchlaufen lassen und somit nicht selbst eingrenzen, an welcher Stelle der Segmentation Fault auftritt. Und da ich keine Angabe bekomme, wo der Segmentation Fault auftritt wird es schwer werden, ihn zu eliminieren :)
Erstmal schauen, ob das "t" was bringt, ansonsten wird es wohl Zeit im Wiki mal den gdb vorzustellen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Multiple definitions

Beitrag von Dirty Oerti » Fr Jan 15, 2010 12:15 am

Vielleicht könnte es wirklich am "t" liegen.
Die Frage ist nun: Wenn ein falscher Parameter ( -> "t") übergeben wurde, was macht die Funktion dann?
Auf welchen Wert stellt sie dann um?
Oder resultiert das in einem Fehler?

Ist die Datei überhaupt geöffnet?

Ich denke, dass sind die Fragen, auf die wir als erstes eine Antwort brauchen :)
Xin hat geschrieben:Die iostreams benutzen auch Filestreams. Und ich muss sagen, dass ich mich gar nicht von Filestreams gequält fühle.
Das ist mir schon bewusst, ist auch schwer verkennbar dank des Namens. :) Im Endeffekt ist es ja exakt das Selbe.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: Multiple definitions

Beitrag von naums » Fr Jan 15, 2010 10:29 am

Frage: was ist der GDB??? GNU Debugger??? Wo krieg ich den her? :?

Das "t" soll für Textdatei stehen. das steht auf c-plusplus (in einem der C Tutorials glaube ich). Der Fehler tritt genau an der Stelle auf, wenn er später aufträte müsste noch der Text stehen "Dieses Programm ist unter GPL zu benutzen.... " keine Ahnung was ich da alles rein geschrieben hatte
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Multiple definitions

Beitrag von cloidnerux » Fr Jan 15, 2010 3:04 pm

http://www.cplusplus.com/reference/clib ... dio/fopen/
Es gibt danach keinen mdous "t". Versuche es mit "r".
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Multiple definitions

Beitrag von Dirty Oerti » Fr Jan 15, 2010 3:13 pm

Hm, dann wird es wohl an dem "t" liegen. Wenn du eine Datei öffnest, solltest du immer auch überprüfen, ob sie auch geöffnet wurde!
Zwecks Fehlerdiagnose: Das kannst du gut mit Textausgaben (vor und hinter kritischen Stellen) machen, du musst nur jede Textausgabe mit einer Newline abschließen, sonst bekommst du sie evtl nicht mehr. Was dann deine Tests verfälschen würde.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Multiple definitions

Beitrag von Xin » Fr Jan 15, 2010 5:09 pm

naums hat geschrieben:Frage: was ist der GDB??? GNU Debugger??? Wo krieg ich den her? :?
Der ist bein GCC dabei, glaube ich.
naums hat geschrieben:Das "t" soll für Textdatei stehen. das steht auf c-plusplus (in einem der C Tutorials glaube ich). Der Fehler tritt genau an der Stelle auf, wenn er später aufträte müsste noch der Text stehen "Dieses Programm ist unter GPL zu benutzen.... " keine Ahnung was ich da alles rein geschrieben hatte
Text ist glaube ich Standard - wird also nicht genannt. Bei Linux spielt es keine Rolle - es sind alles Streams. Für Windows sollte man "b" für binär angeben, wenn man keinen Text lesen möchte, also "rb" für Binär lesen. Unter Linux sollte man das "b" ebenfalls angeben, obwohl es sowieso ignoriert wird.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten