Warum gibt es einen solchen Fehler bei meiner Engine?
-
Hallo
Ich bin dabei, eine Engine zu schreiben. Doch ich weiss jetzt nicht genau, warum dieser Fehler auftritt, wenn ich folgenden Code eingebe:
// NPUEngine.h // // Die Hauptdatei der NPUEngine // #include <windows.h> // namespace // namespace NPU { // Klasse erzeugen // class CNPUEngine { public: // Memberfunktionen // bool Init (); HWND InitWindow (HINSTANCE hInstance); static LRESULT CALLBACK BaseWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); private: }; } // NPUEngine.cpp // // Die Hauptdatei der NPUEngine // #include "NPUEngine.h" HWND NPU::CNPUEngine::InitWindow(HINSTANCE hInstance) { WNDCLASSEX wc; ZeroMemory (&wc, sizeof (WNDCLASSEX)); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = BaseWndProc; wc.hInstance = hInstance; wc.lpszClassName = "My Window"; wc.lpszMenuName = 0; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hbrBackground = (HBRUSH)GetStockObject (BLACK_BRUSH); wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION); if (!RegisterClassEx (&wc)) { MessageBox (NULL, "Fehler beim registerieren des Fenster", "Fehler aufgetreten", MB_OK | MB_ICONEXCLAMATION); return 0; } return (CreateWindowEx (NULL, "My Window", "My Window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 800, 600, NULL, NULL, hInstance, NULL)); } LRESULT CALLBACK NPU::CNPUEngine::BaseWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { return CNPUEngine::WndProc (hwnd, msg, wParam, lParam); } LRESULT CALLBACK NPU::CNPUEngine::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { // Ist eine Taste gedrückt worden? // case WM_KEYDOWN: { switch (wParam) { case VK_ESCAPE: { PostMessage (hwnd, WM_CLOSE, 0, 0); return 0; } default: break; } } break; case WM_DESTROY: { PostQuitMessage (0); return 1; } default: break; } return DefWindowProc (hwnd, msg, wParam, lParam); }Folgende Fehler treten auf:
------ Erstellen gestartet: Projekt: NPUEngine, Konfiguration: Debug Win32 ------ Kompilieren... NPUEngine.cpp Verknüpfen... MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup". C:\Dokumente und Einstellungen\patrick\Eigene Dateien\Visual Studio 2008\Projects\NPUEngine\Debug\NPUEngine.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\patrick\Eigene Dateien\Visual Studio 2008\Projects\NPUEngine\NPUEngine\Debug\BuildLog.htm" gespeichert. NPUEngine - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Weiss jemand was ich falsch gemacht habe?
Gruss Patrick
-
Öh, "Win32 Konsolenanwendung" anstatt "Win32 Anwendung" gewählt?
-
Nein ich habe schon eine Win32-Anwendung ausgewählt.
-
Die Fehlermeldung sagt doch schon alles. Du hast WinMain nicht implementiert.
-
Hehe, stimmt, wo denkst du denn beginnt dein Code?
-
Ja ich weiss, doch es soll ja eine Engine sein, und die WinMain rufe ich erst im richtigen Programm auf. Kann ich das irgendwie einstellen, damit der Compiler nicht mehr reklamiert?
-
Hihi, dann solltest du deinen Engine-Code zu einer Library machen. Bevor du hier fragst wie das geht, versuchs mal mit den FAQ oder google
