Problem mit dem Hallo Windows Programm
-
Hallo,
also ich hab da ein Problem mit dem Hallo Windows Programm:
Hier erstma der Quelltext:// Windows #include <windows.h> // Funktion zum erzeugen eines Fensters HWND CreateMainWindow(HINSTANCE hInstance); //Callback Funktion LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); HWND hWnd = 0; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { hWnd = CreateMainWindow(hInstance); if(NULL == hWnd) { MessageBox(0, "Fenster konnte nicht erzeugt werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION); return 0; } // Struktur, in der Informationen zur Nachricht gespeichert werden MSG msg; // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird while(GetMessage(&msg,NULL,0,0)) { //Nachricht an die Callback Funktion senden TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX wndClass = { sizeof(WNDCLASSEX), //Größe CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW, //Stile MessageHandler, //Callback Funktion 0, //Zusätzliche Angaben 0, //unwichtig!!! hInstance, //Anwendungsinstanz LoadIcon(NULL, IDI_WINLOGO), //Logo LoadCursor(NULL, IDC_ARROW), //Cursor (HBRUSH)GetStockObject(WHITE_BRUSH), //Pinsel NULL, //Menü "WindowClass", //name der Klasse LoadIcon(NULL, IDI_WINLOGO) //Logo, oben neben dem Fenstertitel }; RegisterClassEx(&wndClass); return CreateWindowEx (NULL, //erweiterte Stile "WindowClass", // Klassename "Hello Windows", //Fenstertitel WS_OVERLAPPEDWINDOW | WS_VISIBLE, // Fenstereigenschaften 100, 100, // Anfangspositionen (x , y) 500, 500, // Größe (Breite, Höhe) NULL, // Handle des Elternfensters (falls vorhanden) NULL, // Handle des Menüs (falls vorhanden) hInstance, //Anwendungsinstanz NULL); // für MDI Anwendungen (wird nicht gebraucht) } LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { //Um welche Nachricht handelt es sich? switch(msg) { /*sobald das Fenster geschlossen wird, eine Nachricht senden, die das Programm beendet*/ case WM_DESTROY: PostQuitMessage(0); return 0; break; } //Nachrichten an die Standardnachrichtenverarbeitung von Windows schicken return DefWindowProc(hWnd, msg, wParam, lParam); }So, ich hab den Code jetzt also kompiliert und danach wollte ich das Programm auch mal ausprobieren, nur leider kommt dann immer folgende Fehlermeldung:
Linker-Vorgang läuft... LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main Debug/demo.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. demo.exe - 2 Fehler, 0 Warnung(en)Was soll mir das jetzt sagen?

Ich habe schon wie verrückt gegoogelt aber nichts gefunden
Ich bin noch noob in Sachen Windows-Programmierung und bitte euch um Hilfe!
-
Sag mal, willst du uns verarschen?

6 Threads weiter unten steht eine Frage mit fast genau denselben Titel.
Und, wer hätts gedachts, steht da auch die Lösung drin.Also ein bisßchen mehr Eigenanstrengung bitte das nächste mal.
-
Danke, den hab ich auch schon gesehen, aber der hat mein Problem net gelöst, sonst hätte ich diesen Beitrag ja wohl kaum geschrieben oder??

-
Faulpelz hat zwar Recht, dass unten ein Thread mit dem gleichen Namen steht, doch leider ist man dort etwas vom Thema abgekommen

Also bitte helft mir!
-
Du hast Konsolenanwendung ausgewählt beim Assistenten. Wähle anstatt dessen Win32-Anwendung.
-
Nein habe ich nicht!!!

Ich hab alles so gemacht, wie es im Buch stand, warum funktioniert es nicht?

-
Geh mal in Menü Projekteinstellungen ,
dann wählst du Linker an und liest uns vor, was bei "Subsystem" steht.
-
das hier:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/demo.pdb" /debug /machine:I386 /out:"Debug/demo.exe" /pdbtype:sept
-
sry
da steht halt console hinter:
subsystem:console
-
also hatte kugel doch recht.
-
nein hatte er nicht, ich habe WIN-32 Anwendung ausgewählt
-
Genug der Schuldzuweisungen.

Mach da jetzt aus "subsystem:console" "Windows" draus. Und gut ist.
-
du bist ja echt witzig man ich habe WIN-32 Anwendung gewählt ich weiss wohl noch was ich mache und wenn ich euch sage, ich habe es gemacht, dann ist es auch so

-

-
Gute Nacht, Special Unit 007.
-
Thx @ Sepp, du bist der einzige, der gecheckt hat, wo mein prob liegt, vielen dank

-
...und somit wäre bewiesen, das Du anstatt Win32 halt Konsole gewählt hattest. Also hatte Kugel eben doch Recht... mann mann mann... was ist los? Haben alle zu Weihnachten einen C++-Baukasten geschenkt bekommen?
-
Oder Visual C++ hat einen Fehler.

-
Werde nicht überheblich Hepi, Kugel hatte unrecht
es hat erst funktioniert nachdem ich subsystem:console in "Windows" geändert habe, denk also nicht, du würdest dich auskennen du neunmalklug ok??

-
ROFL. Leg dich nicht mit Leuten an die sich besser auskennen als du.
