Winapi 32 C programmierung
-
Ich möchte mit plain C ein Bild laden und zeichnen. Folgenden Code habe ich dafür im WM_PAINT:
bmpExercising = (HBITMAP)LoadImage( NULL, "sxercising.bmp", IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
MemDCExercising = CreateCompatibleDC(hdc);
SelectObject(MemDCExercising, bmpExercising);
BitBlt(hdc, 10, 10, 450, 400, MemDCExercising, 0, 0, SRCCOPY);Leider kommen folgende Fehler:
98 ...I\main.cpp undefined reference to `__imp_BitBlt'
SelectObject und CreateCompatibleDC findet der auch nicht.Ich benutze Dev C++. Ich habe schon versucht die gdi32.dll runterzuladen und den Ordner anzugeben aber das Problem besteht.
-
Du musst gegen die gdi32.lib linken, du brauchst nichts runterladen. Wie das in DevC++ geht weiß ich nicht, aber schau dir einfach die Projekteinstellungen durch. Da gibts sicherlich Optionen für Include Pfade, zusätzliche Libs usw.
-
Linken unter Dev-C++ geht wenn du auf das Symbol im reiter Projekt auf deinen Projekt Namen Klickst mit der rechten maus taste dort Projekt Optionen dann auf den Reiter Parameter unter Linker Curser setzen und unten auf Bibliothek/ Objekt hinzufügen Klicken den pfad der gdi32 suchen und dann linken.
Dev-C++ ist mitlerweile sehr veraltet soltest eventuell einen neue IDE suchen.
-
@ascharan sagte in Winapi 32 C programmierung:
Curser se
Unter Linker habe ich nur das
https://gyazo.com/71e04e5376592157dddb0427c329498f
Was meinst du mit Curser?Und unter Linker habe ich die gdi32.dll schon ausgewählt trotzdem selber Fehler:
https://gyazo.com/e778b901dfa63ab7e529f973a9d4a42c
-
hier-> Cursor ist einfach klick in den Linker bereich gemeint
-
Und unter Linker habe ich die gdi32.dll schon ausgewählt trotzdem selber Fehler:
https://gyazo.com/e778b901dfa63ab7e529f973a9d4a42cBrauche ich eventuell noch irgendein #include ? Wenn ja welches?
-
linke mal die user32 lib mit weis ets aber nicht ob es dein problem löst ^^
-
NOCHMAL. Du musst gegen die LIB linken, NICHT gegen die dll.
-
Achsoo... wo kriege ich denn die lib her? Bzw in welchem Ordner von Devcpp ist die
-
entweder
C:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib
oder
C:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32@mechanics sagte in Winapi 32 C programmierung:
NOCHMAL. Du musst gegen die LIB linken, NICHT gegen die dll.
wie meinst das
-
Okay ich hab eine gdiplus.h gefunden und oh mein gott....:
https://gyazo.com/6047d523701d053b71bc169f91a99f11
Die scheint defekt zu sein?
-
Es sollte eigentlich reichen, nur den Namen der lib anzugeben (gdi32.lib), und die IDE sollte den Rest soweit eingerichtet haben, dass die Standardlibs gefunden werden.
Du brauchst (noch) kein Gdi+, du wolltest ja GDI programmieren.
-
Aber ich müsste doch nachdem ich die datei gelinkt habe wenigstens das Projekt noch ausführen können. Ich habe leider sonst nicht mit gdi gefunden in den Ordnern, es gibt nur gdiplus sachen.
Wenn ich in den Linker einfach
gdi32.lib
reinschreibe kommt natürlich der error gdi32.lib no such file or directory
-
Aber was soll denn der Scheiß ganz ehrlich
https://gyazo.com/eda7d9df062f8a9ac3a36a0b0fc7f8a8Solche Fehler kommen wenn ich versuche die libs zu linken??
-
@halloiblms sagte in Winapi 32 C programmierung:
Aber ich müsste doch nachdem ich die datei gelinkt habe wenigstens das Projekt noch ausführen können. Ich habe leider sonst nicht mit gdi gefunden in den Ordnern, es gibt nur gdiplus sachen.
Wenn ich in den Linker einfach
gdi32.lib
reinschreibe kommt natürlich der error gdi32.lib no such file or directoryist normal, dev-c++ kennt keine libs die heißen da -> libgdi32.a
-
@mechanics er verwendet dev-c++ nicht Visual Studio ^^"
-
...I\g++.exe [Error] libgdi32.a: No such file or directory
-
Ja, hab ich schon verstanden. Hab ich zwar noch nie verwendet, aber die sollten es eigentlich auch auf die Reihe bekommen, MinGw unter Windows so einzurichten, dass die Standardlibs dabei sind und gefunden werden.
Andererseits, warum benutzt du den Quatsch überhaupt? Warum nicht VS? Das ist kostenlos und deutlich besser.
-
@mechanics sagte in Winapi 32 C programmierung:
endet, aber
Wurde von Prof vorgeschlagen.. Keine Ahnung.
Jedenfalls habe ich die libgdi jetzt explizit im Linker ausgewählt und trotzdem findet der BitBlt usw nicht. Ich kriege hier gleich Krebs.
-
Muss jetzt nicht bedingt am linken liegen kann auch sein sich ein fehler im Quellcode befindet.
@Mechanics Dev-C++ wird nicht weiter entwickelt und normal findet er standart libs ^^" oft muss mann da aber immer spezifizieren ich verwende auch seit einigen jahren ^^ VS von daher xD
-
Der Fehler kommt auf jeden Fall in den Zeilen wo ich die ganz oben genannten Funktionen benutze wie CreateCompatibleDC()