Allgemeine Fehlermeldung (Linker)



  • Ouh vergessen anzugeben: Visual Studio 2010 Professional

    Die Fehlermeldung gabs nicht schon von Anfang an. Frühere Programme funktionierten einwandfrei. Irgendwie hat sich ein Fehler eingeschlichen, oder ich habe irgendetwas falches unbewusst aktiviert.



  • Ich habe gerade eine Vermutung...
    hast du den Code oben direkt aus deiner Datei kopiert? 😃



  • Wie meinst du das? Ich wiederhole es nochmal es liegt nicht am Code, das ist ein generelles Problem.

    #include <iostream>
    
    using namespace std;
    
    float mittelwert(float a,float b);
    
    void main (void)
    
    {
    float ergebnis =0;
    
    ergebnis=mittelwert(2,7);
    cout << ergebnis << endl;
    }
    
    float mittelwert(float a,float b)
    
    {
    float funktion;
    funktion = (a+b)/2;
    return funktion;
    }
    


  • Doch meistens liegt das am Code. Kann allerdings auch an den Linker Einstellungen liegen.
    Was für eine Fehlermeldung bekommst du denn ? Der Linker gibt genau an was er nicht findet, und das würde es deutlich einfacher machen 😉



  • prydza schrieb:

    Wie meinst du das? Ich wiederhole es nochmal es liegt nicht am Code, das ist ein generelles Problem.

    sry, überlesen.

    Schon mit Neuinstallation versucht?



  • @Mods: Ich glaube, das sollte ins Compiler- und IDE-Forum verschoben werden.



  • Neuinstallation würde ich nicht empfehlen, ich bezweifle dass es ein generelles Problem ist.
    Kannst du ein neuerstelltes Projekt kompilieren ? Wie gesagt, poste hier einfach mal die komplette Fehlermeldung sonst kann ich dir nicht weiterhelfen.



  • Oh Boy...

    MSDN schrieb:

    Error LNK1120 gives you a count (number) of unresolved externals for this link. The conditions that cause unresolved externals are described with error LNK2001, which precedes this error message (once for each unresolved external).

    Heisst: guck einfach was VOR dem Error LNK1120 kommt (die LNK2001 Meldung), dann weisst du auch welches Symbol ihm abgeht.
    Das postest du dann hier.
    Und dann sagen wir dir welche .lib du noch zusätzlich linken musst.



  • hustbaer schrieb:

    Und dann sagen wir dir welche .lib du noch zusätzlich linken musst.

    Oder dass er das Projekt richtig einstellen muss weil die Einstellung die er hat vielleicht nach ner WinMain sucht...



  • jup da steht was von WinMain@16

    Der Buildvorgang wurde am 12.10.2012 12:08:13 gestartet.
    PrepareForBuild:
    Das Verzeichnis "C:\Users\Arthur\Documents\Visual Studio 2010\Projects\12oct\Debug\" wird erstellt.
    InitializeBuildStatus:
    "Debug\12oct.unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
    ClCompile:
    12oct.cpp
    MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".
    C:\Users\Arthur\Documents\Visual Studio 2010\Projects\12oct\Debug\12oct.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

    Fehler beim Erstellen



  • Hmm, vielleicht kein Win32 Konsolenobjekt erstellt, oder den Parameter dafür nicht gesetzt?



  • der link error kommt weil du nicht C++ kannst:

    int main() {}
    

    und schon ist alles OK



  • @booost dazu sage ich jetzt mal nichts....

    @grashooper

    Welchen Parameter?
    Ich wähle doch ein Win32-Projekt aus? Oder war das die Win32-Konsolenanwendung? Aber damit geht das auch nicht.



  • Hmm, ich habe eben zum Testen ein Win32-Konsolenprojekt erstellt und das Häckchen bei leeres Projekt gemacht. Dann eine CPP Datei hinzugefügt und dann deinen Code hier per Cut&Paste reingkopiert. Mit Strg+F5 kompilieren und starten lassen und alles hat fein funktioniert.

    #include <iostream>
    
    using namespace std;
    
    float mittelwert(float a,float b);
    
    void main (void)
    
    {
    float ergebnis =0;
    
    ergebnis=mittelwert(2,7);
    cout << ergebnis << endl;
    }
    
    float mittelwert(float a,float b)
    
    {
    float funktion;
    funktion = (a+b)/2;
    return funktion;
    }
    

    Ergbnis, ein Konsolenfenster hat sich geöffnet mit der Ausgabe 4.5



  • Genau das muss raus kommen.

    Nun bei mir heißt das eben Win32-Projekt. Also wie schon vermutet mache ich beim erstellen des Projektes einen Fehler oder in den Linker Einstellungen muss ich was ändern.

    Aber ich warte jetzt mal auf die Antwort von hustbaer,DarkShadow44 bzw. pumuckl.

    siehe Fehlermeldung-->mit der ich nichts anfangen kann 🙄



  • Win32-Projekt ist nix für reine Konsolenausgaben mit int main(), da wird ein andere Einstiegspunkt verlangt und auch das sagt der Linker, nämlich dass er diesen Punkt nicht bei dir findet.

    Du musst unter den Linkersettings deines Projektes unter System das Subsystem /SUBSYSTEM:CONSOLE einstellen, du hast da wahrscheinlich WINDOWS stehen.



  • Nun bei mir heißt das eben Win32-Projekt

    Nein das heißt auch bei dir nicht anders.

    "Win32-Konsolenanwendung" bedeutet das du nur ein Konsolenfenster hast. "Win32-Projekt" ist für eine grafische Oberfläche (oder gar kein Fenster).

    Der wichtige Unterscheid ist, dass du einen anderen Einstiegspunkt brauchst. Du hast die falsche Einstellung, d.h. dass er den Einstiegspunkt den er sucht nicht findet und dir den Fehler wirft.

    Wie du diese Einstellung änderst hat Grasshopper ja schon vollkommen richtig ausgeführt.



  • Also bei mir führt "Win32-Konsolenanwendung" zu einem Projekt mit einer seltsamen _tmain.

    Ich empfehle einfach "Leeres Projekt", Hinzufügen einer neuen main.cpp und Eintragen des Codes da rein.



  • Grasshopper schrieb:

    Win32-Projekt ist nix für reine Konsolenausgaben mit int main(), da wird ein andere Einstiegspunkt verlangt und auch das sagt der Linker, nämlich dass er diesen Punkt nicht bei dir findet.

    Du musst unter den Linkersettings deines Projektes unter System das Subsystem /SUBSYSTEM:CONSOLE einstellen, du hast da wahrscheinlich WINDOWS stehen.

    Das war es! Vielen Dank! Warum auch immer das auf Windows stand gibt es sicher auch eine Erklärung 🙂


Anmelden zum Antworten