relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_CreateSolidBrush' - GPP



  • Hey liebes Forum,

    ich wollte C++ lernen und habe mir die Basics bereits angeschaut und verinnerlicht. Nun dachte ich, kann ich auch mit WinAPI starten, doch es stellt sich ein großes Problem in die Quere. Und zwar diese Fehlermeldung:

    "relocation truncated to fit: R_X86_64_PC32 against undefined symbol `Hier steht, je nach Funktion, etwas anderes'".

    In diesem Falle zeigt mir der GPP-Compiler bei folgender Codezeile:
    static HBRUSH brush0 = CreateSolidBrush(RGB(255, 0, 0));
    die Fehlermeldung aus dem Titel an.

    Ich habe mich wegen dieser Meldung nun schon Stunden aufgehalten und dachte, dass ich etwas bei der Programmierung falsch gemacht habe, mir fällt aber nicht ein was, da ich hier ja nun wirklich nur eine STATIC Variable erzeuge und sie nicht einmal verwende...

    Was ist dieser Fehler und wie kann ich ihn beheben?

    Vielen Dank für jede Hilfe!
    Aaron





  • Im Prinzip bedeutet die Fehlermeldung also, dass die Variable über dem RAM-Limit von 32 bit Anwendungen liegt und deshalb nicht darauf zugreifen kann?

    Korrigier mich, wenn ich falsch liege!



  • Ja, so verstehe ich das. Hast du viele andere statische oder Stack-Daten in deinem Projekt? Oder kannst du explizit für 64bit kompilieren?



  • Da ich es ja nicht mal hinbekomme, die Hintergrundfarbe zu wechseln (aufgrund dieses Fehlers), sind das alle Variablen die ich hab (augenommen die, zur Fenstererzeugung):

    HWND g_windowHandle = nullptr;
    HWND g_hwndButton = nullptr;
    
    int width = 500;
    int height = 500;
    static HBRUSH brush0 = CreateSolidBrush(RGB(255, 0, 0));
    static HBRUSH brush1 = CreateSolidBrush(RGB(0, 255, 0));
    
    static int brushNr = 0;
    

    Dementsprechend rar sieht dann auch die Anzahl an Stack-Frames/Daten aus.

    Th69 schrieb:

    Oder kannst du explizit für 64bit kompilieren?

    Schau ich mal nach.



  • Tja also ich habe jetzt mal rumgeschaut, doch ich finde keine Möglichkeit, den Compiler umzustellen. Ich benutze GCC, installiert mit cygwin.

    Kennt jemand einen anderen Compiler oder weiß, wie man den Umstellt?