Compiler-Fehler bei Release-Build



  • Hallo Forum,
    ich habe ein WinAPI-Programm welches sich im Debug-Modus klaglos compiliere läst, aber im Release-Modus zu folgender Fehlermeldung führt:

    CLEAN SUCCESSFUL (total time: 653ms)
    cd 'C:\Users\Monika\Daten\MeineProgramme\PerspektiveKoerper\Taschenrechner_1'
    C:\cygwin\bin\make.exe -f Makefile CONF=Release
    "/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: Entering directory '/cygdrive/c/Users/Monika/Daten/MeineProgramme/PerspektiveKoerper/Taschenrechner_1'
    "/usr/bin/make" -f nbproject/Makefile-Release.mk dist/Release/Cygwin-Windows/taschenrechner_1.exe
    make[2]: Entering directory '/cygdrive/c/Users/Monika/Daten/MeineProgramme/PerspektiveKoerper/Taschenrechner_1'
    mkdir -p build/Release/Cygwin-Windows
    rm -f "build/Release/Cygwin-Windows/calculator.o.d"
    g++ -c -O2 -MMD -MP -MF "build/Release/Cygwin-Windows/calculator.o.d" -o build/Release/Cygwin-Windows/calculator.o calculator.cpp
    mkdir -p build/Release/Cygwin-Windows
    rm -f "build/Release/Cygwin-Windows/main.o.d"
    g++ -c -O2 -MMD -MP -MF "build/Release/Cygwin-Windows/main.o.d" -o build/Release/Cygwin-Windows/main.o main.cpp
    mkdir -p dist/Release/Cygwin-Windows
    g++ -o dist/Release/Cygwin-Windows/taschenrechner_1 build/Release/Cygwin-Windows/calculator.o build/Release/Cygwin-Windows/main.o
    build/Release/Cygwin-Windows/main.o:main.cpp:(.text+0x53c): undefined reference to `_imp__CreateSolidBrush@4'
    collect2: error: ld returned 1 exit status
    make[2]: *** [nbproject/Makefile-Release.mk:64: dist/Release/Cygwin-Windows/taschenrechner_1.exe] Error 1
    make[2]: Leaving directory '/cygdrive/c/Users/Monika/Daten/MeineProgramme/PerspektiveKoerper/Taschenrechner_1'
    make[1]: *** [nbproject/Makefile-Release.mk:60: .build-conf] Error 2
    make[1]: Leaving directory '/cygdrive/c/Users/Monika/Daten/MeineProgramme/PerspektiveKoerper/Taschenrechner_1'
    make: *** [nbproject/Makefile-impl.mk:40: .build-impl] Error 2

    BUILD FAILED (exit value 2, total time: 4s)

    Der betreffende C++ Code:

    int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow) {
        char szName[] = "Fensterklasse";
        HBRUSH MyBrush = CreateSolidBrush(RGB(0, 150, 255));
    
        WNDCLASS wc;
        wc.style = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc = WndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hI;
        wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)MyBrush;
        wc.lpszMenuName = NULL;
        wc.lpszClassName = szName;
    
        RegisterClass(&wc);
        
        HWND hwnd = CreateWindow(       // Fenster erstellen 
                szName,
                "Rechner",
                WS_SYSMENU | WS_THICKFRAME,
                50,
                50,
                210,
                400,
                NULL, // Handle des Elternfensters nicht vorhanden 
                NULL,
                hI,
                NULL
                );
        ShowWindow(hwnd, iCmdShow);
    //    SetForegroundWindow(hwnd);
    //    SetFocus(hwnd);
        UpdateWindow(hwnd);
    

    Kann mir da jemand helfen,
    lg heinz



  • Dir fehlen beim Linken die WinAPI-Libs (u.a. Gdi32.lib).
    Vergleiche mal mit dem Debug-Build die Zeile, welche mit g++ -o startet.



  • @Th69 sagte in Compiler-Fehler bei Release-Build:

    Dir fehlen beim Linken die WinAPI-Libs (u.a. Gdi32.lib).
    Vergleiche mal mit dem Debug-Build die Zeile, welche mit g++ -o startet.

    Danke Th69, das war die Lösung,
    lg heinz


Anmelden zum Antworten