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?
    danke

    soll 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 kann

    Elefunty





  • 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.


Anmelden zum Antworten