Moinsens an alle:
Ich habe seit langen wieder mein C++ lehrbuch ("Spieleprogrammieren mit C++ und Genesis3d für Kids") ausgegraben und ein paar scripts von der CD getestet, so, soweit so gut, aber wenn ich den script zum öffnen eines neuen fensters:
(skelett.cpp)
Alles anzeigen
(skelett.h)
Alles anzeigen
Kompiliere, dann gibt der folgenden Fehler aus:
[linker error] undefined reference to `GetStackObject@4'
so frage, wo ist da jetzt das Problem? Ist doch soweit alles O.K, kene Fehler, und auch kene unlogiken...
Ich habe seit langen wieder mein C++ lehrbuch ("Spieleprogrammieren mit C++ und Genesis3d für Kids") ausgegraben und ein paar scripts von der CD getestet, so, soweit so gut, aber wenn ich den script zum öffnen eines neuen fensters:
(skelett.cpp)
C-Quellcode
- //-------------------------------------------------
- // Skelett.cpp :
- // Minimalapplikation mit einfachem Fenster
- //-------------------------------------------------
- #include "Skelett.h"
- // Vorwärtsdeklaration:
- // Routine für Fenster-Ereignisse
- LRESULT CALLBACK WndProc (HWND hWnd,
- UINT iMessage, WPARAM wParam, LPARAM lParam);
- // Hauptfunktion für Windows-Applikationen
- int WINAPI WinMain
- (HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPSTR lpCmdLine, int nShowCmd)
- {
- // Fensterklasse initialisieren
- WNDCLASS Win; // Objekt der Fensterklasse
- MSG msg; // Aktuelle Meldung
- // Extrabytes für Klassen/Fensterinstanz
- Win.cbClsExtra = 0;
- Win.cbWndExtra = 0;
- // Instanz der Fensterklasse
- Win.hInstance = hInstance;
- // Symbol und Cursor der Fensterklasse
- Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
- Win.hCursor = LoadCursor(NULL, IDC_ARROW);
- // Hintergrundfarbe (schwarz) und Fensterstil
- Win.hbrBackground =
- (HBRUSH)GetStockObject(BLACK_BRUSH);
- Win.style = CS_HREDRAW | CS_VREDRAW;
- // Verknüpfung mit Ereignis-Routine
- Win.lpfnWndProc = WndProc;
- // Name der Fensterklasse
- Win.lpszClassName = "???";
- Win.lpszMenuName = NULL; // kein Menü
- // Registrierung der Fensterklasse
- RegisterClass (&Win);
- // Fenster erzeugen
- GHandle = CreateWindow (Win.lpszClassName,
- "Windows Minimum - [Esc]=Ende", WS_TILED,
- CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
- MaxHeight, NULL, NULL, hInstance, NULL);
- if (!GHandle)
- {
- return 0; // nicht ok
- }
- // Fenster zeigen und "auffrischen"
- ShowWindow (GHandle, nShowCmd);
- UpdateWindow (GHandle);
- // "Hauptschleife"
- isRunning = true;
- while (isRunning)
- {
- // Fenstereignisse abfragen
- while
- (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
- {
- if (!GetMessage(&msg, NULL, 0, 0 ))
- {
- isRunning = false;
- break;
- }
- // Ereignisdaten "übersetzen", weiterschicken
- TranslateMessage (&msg);
- DispatchMessage (&msg);
- }
- }
- // Programmende
- return 1; // ok
- }
- // Verarbeitung der Meldungen des Hauptfensters
- LRESULT CALLBACK WndProc (HWND hWnd,
- UINT iMessage, WPARAM wParam, LPARAM lParam)
- {
- // Ereignis auswerten
- switch (iMessage)
- {
- case WM_KEYDOWN:
- {
- switch (wParam)
- {
- case VK_ESCAPE: // Ende mit [Esc]-Taste
- {
- PostMessage(hWnd, WM_QUIT, 0, 0);
- }
- }
- }
- // ansonsten Ereignis an "Default-Handler"
- default:
- return DefWindowProc
- (hWnd, iMessage, wParam, lParam);
- }
- return 0;
- }
(skelett.h)
C-Quellcode
- //-------------------------------------------------
- // Skelett.h : Minimal-Header
- //-------------------------------------------------
- #include <windows.h>
- // Konstanten
- const int MaxWidth = 640; // Max. Screenbreite
- const int MaxHeight = 480; // Max. Screenhöhe
- // Globalvariablen
- HWND GHandle; // Fenster-Handle
- bool isRunning; // Laufvariable
Kompiliere, dann gibt der folgenden Fehler aus:
[linker error] undefined reference to `GetStackObject@4'
so frage, wo ist da jetzt das Problem? Ist doch soweit alles O.K, kene Fehler, und auch kene unlogiken...