100 % Richtiger Quellcode - und dennoch Fehler?



  • Hi, ich habe einen 100 % richtigen Quellcode kompiliert und seit neuestem meckert Microsoft Visual C++ 2005 rum, dass iwas im Linker nicht stimmt. Egal, was nur iwas mit "windows.h" zu tun hat, wird "abgewiesen". Hier mal der Fehlerbericht:

    ------ Erstellen gestartet: Projekt: API Tutorial, Konfiguration: Debug Win32 ------
    Kompilieren...
    main.cpp
    Verknüpfen...
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__PostQuitMessage@4" in Funktion ""long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DefWindowProcA@16" in Funktion ""long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageA@4" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__TranslateMessage@4" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetMessageA@16" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__UpdateWindow@4" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateWindowExA@48" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__RegisterClassExA@4" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetStockObject@4" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadCursorA@8" in Funktion "_WinMain@16".
    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__LoadIconA@8" in Funktion "_WinMain@16".
    C:\Dokumente und Einstellungen\USER.USER-B0B86FD03D\Eigene Dateien\Visual Studio 2005\Projects\API Tutorial\Debug\API Tutorial.exe : fatal error LNK1120: 12 nicht aufgelöste externe Verweise.
    Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\USER.USER-B0B86FD03D\Eigene Dateien\Visual Studio 2005\Projects\API Tutorial\API Tutorial\Debug\BuildLog.htm" gespeichert.
    API Tutorial - 13 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Und hier ist der total abgespeckte S-Code:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
    {
    	static char szAppname[] = "AppName";
    	HWND hwnd;
    	MSG msg;
    	WNDCLASSEX wndclass;
    
    	wndclass.cbSize = sizeof(wndclass);
    	wndclass.style = CS_HREDRAW | CS_VREDRAW;
    	wndclass.lpfnWndProc = WndProc;
    	wndclass.cbClsExtra = 0;
    	wndclass.cbWndExtra = 0;
    	wndclass.hInstance = hInstance;
    	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    	wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
    	RegisterClassEx(&wndclass);
    
    	hwnd = CreateWindowEx(NULL, 
    						szAppname, 
    						"Test-Fenster", 
    						WS_OVERLAPPEDWINDOW,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						CW_USEDEFAULT,
    						HWND_DESKTOP,
    						NULL,
    						hInstance, 
    						NULL
    						);
    	ShowWindow(hwnd, iCmdShow);
    	UpdateWindow(hwnd);
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }	
    LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
    	switch (iMsg)
    	{
    		case WM_CREATE:
    				return 0;
    		case WM_DESTROY:
    				PostQuitMessage(0);
    				return 0;
    	}
    	return DefWindowProc(hwnd, iMsg, wParam, lParam);
    }
    

    Ich danke schonmal im voraus.



  • Füge ein
    #pragma comment(lib, "User32.lib")
    hinzu...



  • So jetzt ist die Fehleranzahl auf 2 gesunken. THX schon mal. Hier ist die Meldung:
    €dit: Habe noch
    #pragma comment(lib, "winmm.lib")
    eingefügt 😉


Anmelden zum Antworten