[LinkerError] Undefined reference to UND Syntax Error befor NAMESPACE



  • Hallo,

    erstmal vorne weg, ich bin absoluter Anfänger.
    (die erste schliessen den Tread wieder :P).

    Ich habe Probleme, folgenden kleinen Code, mit Dev-C++ oder Codeblocks zu Kompilieren.

    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    int main()
    {
        char path[MAX_PATH + 1] = {0};
    
        OPENFILENAMEA datei = {sizeof(OPENFILENAMEA), 0, 0,"*.txt\0\0", 0, 0, 0, path, MAX_PATH, 0, 0, ".\\", "Datei Auswaehlen", 0};
    
        if(FALSE == GetOpenFileNameA(&datei))
        {
         MessageBoxA(0, "Ungueltige Datei!", "Fehler", 0);
          return 0;    
        }
        else
            MessageBoxA(0, path, "OK", MB_ICONQUESTION);
        getchar();
    
    return 0;
    
    }
    

    Dev-C++ meldet beim Kompilieren:

    [LinkerError] undefined reference to 'GetOpenFileNameA@4'
    lDreturned 1 exit status.
    

    Code Blocks meldet beim Kompilieren:

    iostream: No suche file or directory
    error: syntax error befor "namespace"
    Warning: data definition has no type or storage class
    

    Bei Dev-c++ habe ich vermutet das er den Header <windows.h> nicht findet, doch dieser ist im Include verzeichnis.

    Bei Code-Blocks ists wohl so das er iostream nicht findet, aber auch der ist an seinem Platz.

    Nun ist die Frage was ich falsch mache, ich habe erst gestern mit C++ angefangen und bisher keinerlei Erfahrung mit irgend welchen programmier Sprachen.

    Bisher habe ich mich nur mit if/else, Arrays, do/while etc erfolgreich beschäftigt aber nach nur ~10 Stunden scheiter ich schon, wie Peinlich 😃

    P.S. Ich hoffe das ist das Richtige Forum, wenn nicht bitte schlagen ^^



  • Bei Code::Blocks ist deine Diagnose wahrscheinlich richtig.

    Hast du den C::B 10.05 installiert mit oder ohne den Compiler MinGW?
    Wenn du Code::Blocks ohne Compiler installiert hast, deinstalliere den.
    Lade und installiere dann die Version mit Compiler und dann sollte das funktionieren.

    Teste das mal.

    Zu deinem Quelltext sind mir nicht alle Spielarten bekannt 😃
    Was möchtest du Programmieren C oder eher C++? Auf letzteres deutet nur der Header hin? Oder soll das WinAPI werden oder noch eine andere Variante?

    MfG f.-th.



  • Danke für deine Antwort.

    Ich habe Code Blocks nun noch mal neu Installiert und diesmal drauf geachtet das es die Version mit MinGW ist dabei noch #include <conio.h> als Header genommen wegen dem getch().

    Das hat anscheinend auch schon etwas gebracht, zumindest ist es nun so das Code Blocks die gleiche Fehler Meldung ausgibt wie Dev-c++ 😃

    [LinkerError] undefined reference to 'GetOpenFileNameA@4'
    

    Worauf will ich hinaus, nun ich bin ja noch Anfänger und sehe das nur als Übungen an da ich leider keinen gescheiten weg weis wie ich sonst c++ lernen soll.

    Als ziel hatte ich mir gedacht ein schon vorhandenes Dos Tool mit einer art Dos GUI zu versehen, da ich von der Programmierung einer Grafischen GUI ja noch weit weg bin habe ich die Parameter abfragen in Textform gemacht (anderes "script") und wollte nun noch ein Datei Öffnen "Fenster" von Windows mit einbinden.

    Bsp: xextool -h default.exe -b -i default.idc default.xex

    Der unterstrichene teil wird abgefragt von mir da es dort natürlich mehrere Möglichkeiten gibt, die default.xex soll dann, wenn ich heraus bekommen habe wie, per Datei Öffnen Dialog übergeben werden
    (ich hoffe ich drücke mich richtig aus^^)

    Später sollte das ganze PUR unter Dos laufen, aber zum testen ob der rest des Programms den läuft, habe ich diese Lösung gewählt, nur das sie das einzige ist was 100% nicht Funktionirt bis jetzt 😞

    Wenn noch jemand was einfällt warum wieso etc dann würde ich mir sehr freuen über jede Hilfe.
    Erstmal bin ich aber froh das ihr eine Anfänger FAQ habt die mich mit lese materieal erschlägt :p

    Edit: Ich denke C++ wäre für mich das Richtige, ich würde gerne etwas lernen was nicht auf MS beschränkt ist bzw wo ich von Anfang an alles selber machen muss und nicht vorgefertigte Teile nutze wie bei Visual Studio etc.
    Also anders gesagt, wenn da schon ein Fenster mit Buttons auf geht dann will ich das selbst geschrieben haben und nicht die "Form" und Button per Visual anlegen 😃



  • Versuche mal "-lcomdlg32" zum Linker command hinzuzufügen.



  • Danke, leider weis ich nicht wo ich das eintragen muss.
    Ich habe es mal so wie auf dem Bild zu sehn ist versucht, leider ohne erfolg und vermutlich nicht das was du meintest?^^

    http://s1.directupload.net/file/d/2786/y8zbw26l_jpg.htm

    Edit: Bei "Command Line Macro" in den "Advanced Options" hab ichs auch versucht, kein erfolg 😞



  • Okay, du hast ein Problem. Du willst einen C++ Quelltext schreiben für ein Programm welches auf Konsole läuft mit WinAPI-Mitteln 🙄

    Das ist eh schon nicht ganz einfach, aber für einen C++ Anfänger meiner Ansicht nach ungeeignet um C++ zu lernen. Vergiss erst mal den WinAPI Kram ;). Wenn du C++ ausreichend kennst kannst du dich damit immer noch vergnügen. Ausserdem ist der gezeigte Quelltext eher C als C++.

    MfG f.-th.



  • Oh, okay 🙂

    Nun ich habe das Forum, und damit einen haufen Tutorials, erst Heute gefunden und werde sicher noch genug haben um C++ zu Lernen.
    Dann lege ich das "Projekt" erstmal auf Eis und wühle mich durch die Informationsfluten 😃

    Wenn jemand mir ein jetzt ein besonders Anfänger freundliches TuT empfehlen kann wäre das Toll, aber so oder so Danke! für die Antworten 🙂
    MFG Rassi.



  • Schau hier im Forum oben rechts. Da sind so Button, okay ein wenig anders als du die von VB kennst, da steht unter anderen Bücher und Tutorials. Einfach mal drauf klicken.

    Ausserdem gibt es im Forum regelmässig Fragen nach Lehrmaterial. Eventuell die Forumssuche mal testen?

    MfG f.-th.



  • Ahh ja 😃

    Vielen Dank, etwas unordentlich da oben rechts xD

    Dann auf bald wenn ich mit noch merkwürdigeren Fragen komme. 🤡


Anmelden zum Antworten