error LNK2019



  • Hallo zusammen,
    also ich weiß, dass jetzt bestimmt einige wieder tief seufzen und sich denken, noch so'n Anfänger! Aber ich hab mich jetzt schon den ganzen Tag durch sämtliche Websites und Foren gelesen, und auch die MSDN studiert! Aber ich finde meinen Fehler nicht! Hier mal mein Code :

    // ----------------------------------------------------------------------------
    #include <windows.h>
    #include <commdlg.h>
    #include <stdio.h>

    // Anwendungsfenster erzeugen
    HWND CreateMainWindow(HINSTANCE hInstance);

    // Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam);

    // Das Fensterhandle
    HWND hWnd = 0;

    //Main-Funktion
    int WINAPI WinMain( HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow )
    {
    hWnd = CreateMainWindow(hInstance);

    // Wenn der Rueckgabewert 0 ist, ist ein Fehler aufgetreten
    if(0 == hWnd)
    {
    MessageBox(0, "Fenster konnte nicht erzeugt werden", "Fehler", MB_OK);
    return 0;
    }

    // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;

    // Diese Schleife laeuft bis die Nachricht WM_QUIT empfangen wird
    while(GetMessage(&msg, NULL, 0, 0))
    {
    // Nachricht an die Callbackfunktion senden
    TranslateMessage(&msg); // F1 o F2
    DispatchMessage(&msg);
    }

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    return 0;
    }

    HWND CreateMainWindow(HINSTANCE hInstance)
    {
    WNDCLASSEX wndClass =
    {
    sizeof(WNDCLASSEX),
    CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW, //STYLE
    MessageHandler, //Callback
    0, //Speicher reservieren
    0, // - " -
    hInstance, //Parameter WinMain()
    LoadIcon(NULL, IDI_WINLOGO), //Icon
    LoadCursor(NULL, IDC_ARROW), //Maus
    (HBRUSH)COLOR_WINDOW, //Hintergrundfarbe
    NULL, // Menu ode nicht?
    "WindowClass", //Name der Klasse
    LoadIcon(NULL, IDI_WINLOGO) //Icon Titelleiste
    };

    RegisterClassEx(&wndClass);

    return CreateWindowEx(
    WS_EX_ACCEPTFILES, //erweitere Fensterstile
    "WindowClass", //Klassenname
    "Test", // Titelleiste
    WS_OVERLAPPEDWINDOW | WS_VISIBLE, //Art des Fensters
    15, 15, //Koordinaten
    1000, 700, //Groeße
    NULL, //Fensterhanlde des Parent
    NULL, //Menu ?
    hInstance, //Instanz der Anwendung
    NULL //MIDI ?
    );

    }

    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // fuer Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    HMENU hMenu, hSubMenu;
    POINT point;
    int iAuswahl;
    char szText[64];

    // testen, um welche Nachticht es sich handelt
    switch(msg)
    {
    // wenn das Fenster geschlossen wird, eine Nachricht senden,
    // die das Programm beendet
    case WM_CREATE:

    hMenu = CreateMenu();

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING, 101,"&Daten einlesen");
    AppendMenu(hSubMenu, MF_STRING, 102,"&Daten speichern");
    AppendMenu(hSubMenu,MF_SEPARATOR,0,0);
    AppendMenu(hSubMenu, MF_STRING, 103,"&Beenden");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Menu");

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING,201, "&Laktat - IAS Bestimmung");
    AppendMenu(hSubMenu, MF_STRING,202, "&Bestimmung der Ventialtorischen Schwellen");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Auswertungs - Mehtoden");

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING,301, "&Programm");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Hilfe");

    SetMenu(hWnd, hMenu);
    return 0 ;

    case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case 101:
    OPENFILENAME ofn; // common dialog box structure
    char szFile[260]; // buffer for file name
    HWND hWnd; // owner window
    HANDLE hf; // file handle

    // Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hWnd;
    ofn.lpstrFile = szFile;
    //
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not
    // use the contents of szFile to initialize itself.
    //
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.\0Text\0.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

    // Display the Open dialog box.

    if (GetOpenFileName(&ofn)==TRUE)
    hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
    0, (LPSECURITY_ATTRIBUTES) NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
    (HANDLE) NULL);
    break;
    }
    return 0;
    break;

    case WM_DESTROY:
    PostQuitMessage(0);
    //DestroyMenu(hMenu);
    return 0;
    break;
    }

    // Wenn wir uns nicht um die Nachricht gekuemmert haben
    // wird sie an die Standardnachrichtenverarbeitung von Windows
    // geschickt
    return DefWindowProc(hWnd, msg, wParam, lParam);
    }

    // ----------------------------------------------------------------------------

    Und der Fehler:

    main.obj : error LNK2019: unresolved external symbol __imp__GetOpenFileNameA@4 referenced in function "long __stdcall MessageHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?MessageHandler@@YGJPAUHWND__@@IIJ@Z)
    Laktat.exe : fatal error LNK1120: 1 unresolved externals

    Hab mich auch schon nach dem fehler umgeschaut, aber die FileOpen.lib müsste doch mit der commdlg.h mit eingebunden werden ?

    Bitte helft mir !!!
    VIELEN DANK



  • fast Neuling schrieb:

    Hab mich auch schon nach dem fehler umgeschaut, aber die FileOpen.lib müsste doch mit der commdlg.h mit eingebunden werden ?

    Glaub nicht, oder haben die M$ jetzt ihr pragma zeugs schon überall reingedrüct.
    Füg die Lib halt mal beim Linker hinzu



  • Habe jetzt meine gesamte Festplatte nach der Fileopen.lib durchsucht, und nichts gefunden! Habe Microsoft Visual C++ Toolkit 2003, Microsoft Platform SDK for Windows Server 2003 SP1 und benutze Code::Blocks. Und da ist sie anscheinend nicht dabei? Wo bekomme ich die Fileopen.lib her?



  • Also, habe jetzt mal die OpenFile.dlg in den Linker eingefügt! In der müsste die OpenFile.dll enthalten sein, oder so ? Beim googlen findet man da nicht viel! Die oben genannten Fehlermeldungen sind weg, dafür hab ich jetzt ne neue :

    LINK : fatal error LNK1181: cannot open input file 'C:\Programme\Microsoft.obj'

    Bitte, kann mir denn hier niemand helfen? Ich bin echt am verzweifeln, da es anscheinend nicht an meinem Code liegt !!!



  • Nimm halt die "comdlg32.lib" - weiss nicht wie du auf "OpenFile.lib" kommst 😕



  • mir der Comdlg32.dll bekomm ich wieder als Fehler:

    LINK : fatal error LNK1181: cannot open input file 'C:\Programme\Microsoft.obj'



  • Keine Ahnung was dann das Problem sein soll - hab noch nie so einen Fehler bekommen. Und du bist sicher dass CodeBlocks mit .lib Dateien im Microsoft Format was anfangen kann?



  • Ich habe dieses nervende Problem auch:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-199413.html

    Könnt ihr mir in meinem Fall weiterhelfen was soll ich machen?



  • pharmacy;



  • pharmacy;


Anmelden zum Antworten