[LNK2019] Einstellungen überprüfen??



  • Hallo,
    Ich bin vor 3 Tagen von Dev-C++ auf VC++ umgestiegen..
    Nachdem ich einige Probleme schon gelöst habe finde ich auf dieses hier keine Antwort:

    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageA@4" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TranslateMessage@4" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PeekMessageA@20" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetSystemMetrics@4" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassA@4" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadIconA@8" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadCursorA@8" in Funktion "_WinMain@16".
    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetStockObject@4" in Funktion "_WinMain@16".

    Dass ist nur eine kleine Auswahl von insgesamt 15 Fehlermeldungen.
    Davor ist eine lange Liste mit Warnungen dass manche Makros neudefiniert würden...Alles windows makros...
    Der Code funktioniert auf Dev-C++ weswegen ich glaube dass es an irgendeiner VC++ einstellung leigt und mit 5 Klicks wahrscheinlich schon gelöst ist. (Wie mein Zeichensatzproblem wofür ich 2h gebraucht hab 🙄 )
    aber falls nicht hier ist der Code zu den Fehlermeldungen oben:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow){
        // Lokale Variablen
        // Variable für Windowsnachrichten
        MSG msg;
        // Datenstruktur mit Variablen für eine Fensterklasse
        WNDCLASS wc;
    
        static TCHAR szAppName[] = "test-FRP";
        static TCHAR szWindowName[] = "Das Hauptfenster";
    
        hInstanceApp = hInstance;   // globales Handle auf die     // Instance der WINAPI
    
        // Protokolldatei wird neu angelegt
        protokoll_neu ("Protokolldatei zum Fenster-Rahmen-Projekt");
    
        // Die Fensterklasse wird mit Daten gefüllt
        wc.cbClsExtra        = 0;    // Extra Speicher wird nicht benötigt.
        wc.cbWndExtra        = 0;    // dto.
        wc.hbrBackground     = (HBRUSH) GetStockObject (WHITE_BRUSH);    // Hintergrundfarbe festlegen
        wc.hCursor           = LoadCursor (NULL, IDC_ARROW);             // Mauspfeil laden
        wc.hIcon             = LoadIcon (hInstanceApp, IDI_APPLICATION); // Programmsymbol laden
        wc.hInstance         = hInstanceApp; // Erkennungscode unseres Programms an die Fensterklasse übergeben
        wc.lpfnWndProc       = WindowProc;   // Name unserer CALLBACK Funktion übergeben
        wc.lpszClassName     = szAppName;    // Name unseres Programms übergeben
        wc.lpszMenuName      = NULL;         // Menü deaktivieren
        wc.style             = CS_HREDRAW | CS_VREDRAW; // Darstellungsmodus normal
        // Windowsfensterklasse anmelden & gelingen überprüfen
        if (!RegisterClass(&wc)){
             FehlerBox (false, "Fehler beim Erzeugen der Fensterklasse.", "Fehler - Programmende");
        }else{
             protokoll ("Fensterklasse erfolgreich angelegt.");
        } // else
    
        // Bildschirmauflösung erfragen   und in unsere Variablen ablegen
        iAufloesungX = GetSystemMetrics(SM_CXSCREEN);
        iAufloesungY = GetSystemMetrics(SM_CYSCREEN);
        // Eintrag Protokoll Datei
        sprintf (sProtokollText,"Auflösung gesetzt auf:\nX:   %d\nY: %d", iAufloesungX,iAufloesungY);
        protokoll (sProtokollText);
    
        // Das konkrete Fenster erzeugen
        fenster_erstellen(szAppName, szWindowName);
    
        init();    // Initialisierungsarbeiten
    
        // Hautpschleife
        while (TRUE){
              // Prüfen, ob eine Nachricht zum verarbeiten vorliegt
              if (PeekMessage (&msg, NULL, 0,0, PM_REMOVE)){
                  // Prüfen, ob die Nachricht besagt, dass das Programm beendet werden muss.
                  // Wenn ja, brechen wir unsere Endlosschleife ab.
                  if (msg.message == WM_QUIT)
                       break;
    
                  // Nachricht übersetzen und an die CALLBACK Funktion weiterleiten.
                  TranslateMessage (&msg);
                  DispatchMessage (&msg);
              } 
    
              programm();
          } // Hauptschleife
    
          clean_up();
    
        return (msg.wParam);
    }
    

    aso PSDK usw. sollte eigentlcih eingebunden sein... Ich kreig keine Fehlermeldungen dass eine Datei nicht gefunden worden wäre..

    Vielen Dank

    Hannes



  • DU musst noch die user32.lib dazulinken...

    OT: Dev-C++ ist nicht zu empfehlen... nimm VS2005EE oder CB



  • Hey cool das hat fast alle ausradiert...

    aber sollte user32.lib icht autamtisch mit von der Partie sein?

    Wie kommt es dass es bei Dev-C++ geht und nicht bei VC++(übrigens ich habe VC++ 2005 EE)?

    Nur noch ein Fehlermeldung ist jetzt da:

    hauptprogramm.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetStockObject@4" in Funktion "_WinMain@16".

    Vielen vielen dank für die schnelle antwort ich hät mich wahrscheinlich in den tiefen des netzes verloren...

    Hannes



  • Ok nvm ich habs gefunden es ist die GDI32.lib...
    Jetzt funktioniert alles und sämtliche Warnungen sind weg...
    Hach ein schönes Gefühl etwas zum laufen gebracht zu haben...

    vielen vielen vielen dank

    Hannes



  • Upps... sorry hab ich überlesen...

    Dann solltes Du aber keine Probleme haben, *wenn* Du die Anleitung zur PSDK-Integration gelesen *hättest*.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html



  • Ja hab ich eigentlich.
    Aber nach nochmaligen durchlesen hab ich gmeerkt dass ich statt corewin_express.vsprops zu editieren, CoreWin.vsprops editiert habe. Bzw. war es da schon von vorneherein eingefügt.

    Blöder Fehler blöder user.. tut mir leid..

    Hannes


Anmelden zum Antworten