warning: converting NULL to non-pointer type
-
Hallo zusammen, ich wollte mit meinem compiler dev-c/c++ v.4.0 den quellcode von pronix.de um ein einfaches fenster zu erstellen kompilieren, hier der code:
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LPCSTR lpszAppName = "AppName"; LPCSTR lpszTitle = "Meine erste Applikation"; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hWnd; MSG msg; WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszClassName = lpszAppName; wc.lpszMenuName = lpszAppName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if( RegisterClassEx(&wc) == 0) return 0; hWnd = CreateWindowEx(NULL, lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if( hWnd == NULL) return 0; ShowWindow(hWnd, iCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam) { switch (umsg) { case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, umsg, wParam, lParam); }
bei mir erscheint immer die fehlermeldung warning: converting NULL to non-pointer type und der source wird nicht compiliert.
die fehlermeldung wird auf zeile 43 bezogen in der folgendes steht:hWnd = CreateWindowEx(NULL, lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
das ist die unterste zeile mit dem "NULL);".
ich kann mir selber nicht weiterhelfen, hat jemand eine ahnung?grüsse, raff
-
Versuch's mal mit 0 anstatt NULL beim ersten Parameter
Aber wenn du die erweiterten Window-Styles eh nicht verwendest kannst du auch gleich CreateWindow verwenden
-
hmm...wieso ist das denn so?
also fehlermeldung wird nicht mehr gezeigt, jetzt zeigt der compiler:
undefined reference to `GetStockObject@4'
und der source wird immer noch nicht kompiliert...
-
raff schrieb:
hmm...wieso ist das denn so?
Weil dwExStyle kein Pointer ist sondern ein DWORD (32-bit unsigned integer).
Aber das ist ja auch nur eine Warnung und kein Fehlerraff schrieb:
also fehlermeldung wird nicht mehr gezeigt, jetzt zeigt der compiler:
undefined reference to `GetStockObject@4'
und der source wird immer noch nicht kompiliert...Er hat wohl nur deswegen nicht kompiliert :p Hast du auch Gdi32.lib gelinkt?!
-
also in C:\Dev-C++\Lib hab ich die datei gdi32.def mit dem inhalt gefunden:
LIBRARY GDI32.dll EXPORTS [...] GetStockObject@4 [...
die Zeile GetStockObject@4 ist ja auch zu finden..sagt mir aber absolut nichts.
im dev-c++ ist der pfad zu den libraries mit C:\Dev-C++\Lib\ richtig gelinkt.edit by flenders: Poste doch bitte in Zukunft keine so ewig langen Listen
-
Jo, und hast Du dem Linker gesagt er soll die gdi32.lib einbinden?
-
also, wieso redet ihr von gdi32.lib und bei mir heisst die gdi32.def (keine *.lib bei mir) und muss ich dem linker noch explizit sagen wo was ist, musste ich bis jetzt nie, wenn ja, wieso und wo?
gruss, raff