fehler beim kompilieren
-
Hi
ich habe aus einem lehrbuch einen Text (quelltext) vonder cd und nicht getippt.
wenn ihr den text braucht, einfach melden, der is so lang.
C++Builder von Borland meldet nur:
[C++Fehler] vfile.h (174): E2138 Typmodifizierer verursacht konflikte.
da hab ichs mal mit Microsoft Visual C++ 2005 Express Edition versucht.
der meldet diesen Fehler nicht (evtl noch nicht).
dieser meldet nur [fehler]Game1A.h(8) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "windows.h": No such file or directory[/Fehler].
da hab ich mit der windows suchfunzin nach windows.h gesucht, und von meinen anderen Compilern ne windows.h genommen und direkt ins proj mit reingescmissen.
aber die fehlermeldung bleibt.......bedanke mich für alle hilfreiche und nicht so hilfreichen antworten!
E l e f u n t y
-
Zu dem BCB Error lässt sich ohne Quelltext natürlich garnichts sagen.
Elefunty schrieb:
da hab ich mit der windows suchfunzin nach windows.h gesucht, und von meinen anderen Compilern ne windows.h genommen und direkt ins proj mit reingescmissen.
Sowas macht man auch nicht. Du musst die Microsoft PSDK installieren und dem Visual C++ danach mitteilen wo es dessen Include- und Lib-Verzeichnis findet, damit Du WinAPI-Programme übersetzen kannst.
-
jo thx
und wo bekomm ich den müll her und vie mach ich das?
dankesoll ich den quelltext noch nachschicken?
E l e f u n t y
-
Hallo
also normaleweise haben alle Windows-Compiler die nötigen Sachen, um auf windows.h zuzugreifen. Insbesondere beim Builder kann ich sagen, das sowohl in einem VCL-Projekt als auch in einem Konsolenprojekt #include windows.h korrekt erkannt wird. Du machst also etwas anderes falsch, aber ohne Quellcode und vollständige Fehlermeldung können wir dir nicht weiterhelfen.
bis bald
akari
-
//--------------------------------------------------- // Game1A.cpp : // Anzeige von BSP-Welt (mit Bewegungen) //--------------------------------------------------- #include "Game1A.h" // Spielobjekt TGame Game; // Vorwärtsdeklaration (für Fensterereignisse) LRESULT CALLBACK WndProc (HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam); // Windows-Hauptfunktion mit Game-Schleife int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 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 = GVersion; Win.lpszMenuName = NULL; // kein Menü // Registrierung der Fensterklasse RegisterClass (&Win); // Fenster erzeugen GHandle = CreateWindow (Win.lpszClassName, "Genesis3D - [Esc]=Ende", WS_TILED, CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth, MaxHeight, NULL, NULL, hInstance, NULL); if (!GHandle) { return 0; // nicht ok } // Mauszeiger verbergen ShowCursor (false); // Fenster zeigen und "auffrischen" ShowWindow (GHandle, nCmdShow); UpdateWindow (GHandle); // Spielinitialisierung Game.CreateGame (); // Spielmodus auf "Laufen" einstellen Game.isRunning = true; // Solange Spiel "läuft" while (Game.isRunning) { // evtl. Fenstereignisse abfragen while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) { // Spielverlauf Game.RunGame (); // Tasten abfragen if (!Game.GetInput()) { Game.isRunning = false; break; } // Ereignisdaten auswerten (lassen) TranslateMessage (&msg); DispatchMessage (&msg); } } // Programm-/Spielende Game.FreeGame (); return 1; // ok } // Verarbeitung der Fensterereignisse LRESULT CALLBACK WndProc (HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { // Ereignis auswerten switch (iMessage) { case WM_KEYDOWN: { switch (wParam) { case VK_ESCAPE: // Spielende mit [Esc]-Taste { PostMessage(hWnd, WM_QUIT, 0, 0); } } } // ansonsten Ereignis an "Default-Handler" default: return DefWindowProc (hWnd, iMessage, wParam, lParam); } return 0; } //--------------------------------------------------- // Spiel initialisieren/"aufbauen" void TGame::CreateGame (void) { geRect WorldScreen; // Anzeigefläche char WorldName[64]; // Name der Welt/Level geVFile *WorldFile; // BSP-Datei (Welt/Level) // 3D-Engine initialisieren Engine = geEngine_Create (GHandle, GVersion, "."); if (!Engine) ExitError ("3D-Engine kann nicht gestartet werden!"); // Anzeigedaten für Engine ausschalten geEngine_EnableFrameRateCounter(Engine, GE_FALSE); // Treiber auswählen SetDriver (); // Anzeigefläche festlegen WorldScreen.Left = 0; WorldScreen.Right = MaxWidth - 1; WorldScreen.Top = 0; WorldScreen.Bottom = MaxHeight - 1; // Koordinaten-Matrix setzen geXForm3d_SetIdentity (&XForm); // Kamera initialisieren Camera = geCamera_Create (2.0, &WorldScreen); if (!Camera) ExitError ("Kamera kann nicht installiert werden!"); // BSP-Datei laden strcpy (WorldName, Pfad); strcat (WorldName, BSP_Datei); WorldFile = geVFile_OpenNewSystem (NULL, GE_VFILE_TYPE_DOS, WorldName, NULL, GE_VFILE_OPEN_READONLY); // Wenn Datei ok, Welt/Level erzeugen if (WorldFile) { World = geWorld_Create(WorldFile); geVFile_Close(WorldFile); }; if (!World) ExitError ("Welt/Level lässt sich nicht erzeugen!"); // Welt/Level mit 3D-Engine verknüpfen if (!geEngine_AddWorld(Engine, World)) ExitError ("Welt/Level lässt sich nicht einbinden!"); // Betrachterposition "nullen" geVec3d_Set (&ViewVector, 0.0, 0.0, 0.0); } //--------------------------------------------------- // Spiel "in Szene setzen" void TGame::RunGame (void) { // TESTANZEIGE // char Txt[20]; itoa(int(ViewVector.Z), Txt, 10); // geEngine_Printf (Engine, 10,10, Txt); // Koordinaten und Winkel ausrichten geXForm3d_SetIdentity (&XForm); geXForm3d_RotateX (&XForm, 0.0); geXForm3d_RotateY (&XForm, 0.0); geXForm3d_RotateZ (&XForm, 0.0); geXForm3d_Translate (&XForm, ViewVector.X, ViewVector.Y, ViewVector.Z); geCamera_SetWorldSpaceXForm (Camera, &XForm); // Rendering starten if (!geEngine_BeginFrame(Engine, Camera, GE_TRUE)) ExitError ("BeginFrame gescheitert!"); // Welt/Level rendern und darstellen if (!geEngine_RenderWorld (Engine, World, Camera, 0.0)) ExitError ("Rendering gescheitert!"); // Rendering beenden if (!geEngine_EndFrame(Engine)) ExitError ("EndFrame gescheitert!"); } //--------------------------------------------------- // Spiel "abbauen" void TGame::FreeGame (void) { // Kamera, Welt und Engine freigeben if (Camera) geCamera_Destroy (&Camera); if (World) geWorld_Free (World); if (Engine) { geEngine_ShutdownDriver(Engine); geEngine_Free (Engine); } // Zeiger "nullen" Camera = NULL; World = NULL; Engine = NULL; } //--------------------------------------------------- // Pfeiltasten und [Esc] abfragen bool TGame::GetInput (void) { const float xDiff=10.0; const float yDiff=5.0; const float zDiff=15.0; // Links-Rechts-Bewegung if (GetAsyncKeyState(VK_LEFT) < 0) ViewVector.X -= xDiff; if (GetAsyncKeyState(VK_RIGHT) < 0) ViewVector.X += xDiff; // Vor/Zurück-Bewegung if (GetAsyncKeyState(VK_UP) < 0) ViewVector.Z -= zDiff; if (GetAsyncKeyState(VK_DOWN) < 0) ViewVector.Z += zDiff; // Rauf-Runter-Bewegung if (GetAsyncKeyState(VK_PRIOR) < 0) ViewVector.Y += yDiff; if (GetAsyncKeyState(VK_NEXT) < 0) ViewVector.Y -= yDiff; // Ende mit Esc-Taste if (GetAsyncKeyState(VK_ESCAPE) < 0) return false; else return true; } //-------------------------------------------------- // Grafiktreiber/modus wählen/setzen void TGame::SetDriver (void) { geDriver_System *DriverSystem; long Breite, Hoehe; // Treibersystem "einbetten" DriverSystem = geEngine_GetDriverSystem (Engine); if (!DriverSystem) ExitError ("Kein Treibersystem gefunden!"); // DirectX-Grafiktreiber aufnehmen Driver = geDriver_SystemGetNextDriver (DriverSystem, NULL); if (!Driver) ExitError ("Treiber nicht gefunden!"); // Suchschleife für Grafikmodus DMode = geDriver_GetNextMode (Driver, NULL); // Liste nach passendem Modus durchsuchen while(true) { if (!DMode) ExitError ("Falscher Treibermodus!"); // Auflösungswerte ermitteln geDriver_ModeGetWidthHeight (DMode, &Breite, &Hoehe); // Wenn Maße passen, Schleife verlassen if (Breite == MaxWidth && Hoehe == MaxHeight) break; // Ansonsten weitersuchen DMode = geDriver_GetNextMode (Driver, DMode); } // Grafiktreiber/modus überprüfen if ((!Driver) || (!DMode)) ExitError ("Kein passender Grafiktreiber/modus!"); // Grafiktreiber/modus initialisieren if (!geEngine_SetDriverAndMode (Engine, Driver, DMode)) ExitError ("Grafikinitialisierung fehlgeschlagen!"); } //-------------------------------------------------- // Spielabbruch bei Fehler void TGame::ExitError (char *Txt) { // Fehlermeldung anzeigen, Programm abbrechen MessageBox (NULL, Txt, "Fehler", 48); FreeGame(); _exit (EXIT_FAILURE); }
//--------------------------------------------------- // Game1A.h : // Header mit Klassendeklaration von TGame //--------------------------------------------------- // #define _BCB // nur für Borland C++Builder #include <windows.h> #include "include\genesis.h" class TGame { public: // Eigenschaften geEngine *Engine; // 3D-Engine geWorld *World; // World/Level geCamera *Camera; // Kamera/Betrachter geDriver *Driver; // Grafiktreiber geDriver_Mode *DMode; // Grafikmodus geXForm3d XForm; // Welt-Matrix bool isRunning; // Spielmodus an/aus geVec3d ViewVector; // Betrachterposition // Methoden void CreateGame (void); void RunGame (void); void FreeGame (void); void SetDriver (void); bool GetInput (void); void ExitError (char *Txt); } ; // Pfad- und Dateinamen const char *Pfad = ".\\levels\\"; const char *BSP_Datei = "World0.bsp"; const char *GVersion = "GPlay1A"; // Globale Konstanten const int MaxWidth = 640; // Max. Screenbreite const int MaxHeight = 480; // Max. Screenhöhe // Globalvariable HWND GHandle; // Handle des "Spielfensters"
das is der txt.
im nez hab ich gelesen, das der microsofft die noch nicht hat und ich ihm das sagen kannElefunty
-
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.