JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=bc1cc912e2090119565b431aab5054deMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

MVS C++ 2005, Kompiler Fehler
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 11.09.2006, 21:34    Titel: MVS C++ 2005, Kompiler Fehler Antworten mit Zitat

Hallo,

ich habe ein Problem mit dem MVS C++ 2005, er zeigt mir mehrere Kompiler Fehler an von einer winnt.h an.

Code:
------ Erstellen gestartet: Projekt: Gerüst, Konfiguration: Debug Win32 ------
Kompilieren...
main.cpp
d:\programme\microsoft visual studio 8\vc\platformsdk\include\winnt.h(222) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PVOID64'
d:\programme\microsoft visual studio 8\vc\platformsdk\include\winnt.h(222) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
d:\programme\microsoft visual studio 8\vc\platformsdk\include\winnt.h(5940) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Buffer'
d:\programme\microsoft visual studio 8\vc\platformsdk\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
d:\programme\microsoft visual studio 8\vc\platformsdk\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
Das Buildprotokoll wurde unter "file://e:\Eigene Dateien\Visual Studio 2005\Gerüst\Debug\BuildLog.htm" gespeichert.
Gerüst - 5 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Nutze MVS2005 habe CHris SDK drauf und mehr nix.

Ich habe mir auch neue Hardware gekauft ein AMD 64 3800+, Gigabyte GA-M59SLI-S5, 1GB DDRRAM II, 7600GT von Asus

P.S Chris Projekte von der CD oder die Tutorials von der SDK Funktionieren auch nicht, da zeigt er auch immer winnt.h fehlers an.

Würde mich freuen wenn mir jemand helfen kann.

Hier könnt ihr euch den Code runter laden.
Gerüst(klappt nur unter 2005 zu öffnen.)

Diesen Code soll er nur Kompilieren.

CPP:
// Headerdaten ////////////////////////////////////////////
#include <windows.h>

// Ende der Hederdaten ////////////////////////////////////

// Fenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);

// Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);

HWND hWnd = 0;

// Windows-Main Funktion
int WINAPI WinMain(HINSTANCE hInstance,
               HINSTANCE hPrevInstance,
               LPSTR lpCmdLine,           // Kommandozeile
               int nCmdShow)              // Art wie das Fenster angezeigt werden soll

{
   hWnd = CreateMainWindow(hInstance);

   if(0 == hWnd)
   {
      MessageBox(0,"Fenster konnte nicht erzeugt werden!","Fehler",MB_OK);
      return 0;
   }

   MSG msg;

   // WM_QUIT erfangen wird
   while (GetMessage(&msg,NULL,0,0))
   {
      // Nachricht an der Callbackfunktion nutzen
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return 0;
}

// Fenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance)
{
   WNDCLASSEX wndClass =
   {
      sizeof(WNDCLASSEX),
      CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
      MessageHandler,
      0,
      0,
      hInstance,
      LoadIcon(NULL, IDI_WINLOGO),
      LoadCursor(NULL, IDC_ARROW),
      (HBRUSH)GetStockObject(WHITE_BRUSH),
      NULL,
      "WindowClass",
      LoadIcon(NULL, IDI_WINLOGO)
   };

   RegisterClassEx(&wndClass);

   return CreateWindowEx(NULL,
                        "WindowClass",
                    "Gerüst",
                    WS_OVERLAPPEDWINDOW |
                    WS_VISIBLE,
                    100, 100, 400, 300,
                    NULL,
                    NULL,
                    hInstance,
                    NULL);
}

LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   // testen, um welche Nachricht es sich handelt
   switch(msg)
   {
      case WM_DESTROY:
         PostQuitMessage(0);
         return 0;
         break;
   }

   return DefWindowProc(hwnd, msg, wParam, lParam);
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Loigie
Junior JLI'ler



Anmeldedatum: 29.06.2004
Beiträge: 52
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 09:23    Titel: Antworten mit Zitat

Der Code lässt sich problemlos bei mir Compilieren. Also kann es eigentlich nur an den Projekteinstellungen oder deinem SDK liegen. Vielleicht einfach mal das SDK und die MSVC++ 6 IDE von der Buch CD verwenden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 12:21    Titel: Antworten mit Zitat

Geht bei mir auch. Schau mal, ob die Reihenfolge der Pfade (Header, Libs, usw.) okay ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 12.09.2006, 12:57    Titel: Antworten mit Zitat

Bei mir geht ebenfalls, alles sowohl im Release als auch im Debug.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 13:17    Titel: Antworten mit Zitat

Loigie hat Folgendes geschrieben:
Vielleicht einfach mal das SDK und die MSVC++ 6 IDE von der Buch CD verwenden.


Ich habe die SDK drauf von Christians Buch.

Wie müsste die reinfolge aussehen Chris(von den Headers und Libs)???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 13:41    Titel: Antworten mit Zitat

Die Pfade zum Platform SDK sollen ganz oben stehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 13:50    Titel: Antworten mit Zitat

Wegen sowas macht der Zicken? wenn sie nicht ganz obenstehen. Hab fast ein Wutanfall bekommen. -.-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 12.09.2006, 14:26    Titel: Antworten mit Zitat

Christian Rousselle hat Folgendes geschrieben:
Die Pfade zum Platform SDK sollen ganz oben stehen.


Bei mussten die Pfade zum Platform SDK ganz unten stehen Question Und jetzt klappt es.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 13.09.2006, 09:33    Titel: Antworten mit Zitat

Die Pfade der PlattformSDK, die vom DirectX SDK usw. sind positionsabhängig. Die Pfade "ganz oben" haben die höchste Priorität, die "ganz unten" die niedrigste. Das ist normalerweise nicht wichtig, sofern von jeder SDK nur eine Version installiert ist.
Updatet man aber das eine oder andere SDK, so werden die Positionen wichtig, weil es Header mit gleichen Namen (in unterschiedlichen Verzeichnissen) gibt. ein einfaches
CPP:
#include <irgendwas.h>
nutzt dann die Datei, mit dem Pfad der höchsten Priorität. von da her ist die Reihnfolge schon "wichtig". In den Installationsanweisungen diverser SDKs steht dann immer nur drinn "Unsere Pfade müssen an erster Stelle stehen." - Das ist so nicht ganz richtig. Die Pfade müssen nur an höchster Stelle eigener Priorität stehen - bzw. so hoch wie notwendig, damit das SDK alle seine eigenen Dateien zuerst findet...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 13.09.2006, 14:28    Titel: DAnke Antworten mit Zitat

Danke für die erklärung AFE-GmdG.

Naja jetzt Funktioniert ja mein Programm wieder. Auch wenn die SDK Pfade ganz unten stehen in Extra->Option.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Mat
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 11.10.2006, 17:26    Titel: Anderer Compilerfehler Antworten mit Zitat

Bei mir nervt MSVS 2005 tierisch, mit der Unterscheidung zwischen LPCWSTR und const char, wobei ich mir nicht ganz sicher bin, warum diverse Funktionen aus den DirectX-Headern plötzlich LPCWSTR erwarten sollten, schließlich hat sich an diesen nichts geändert ... Confused

Ähnliche Fehler wie dieser
CPP:
Konvertierung des Parameters 2 von 'const char [45]' in 'LPCWSTR' nicht möglich

treten in jedem alten Project von mir 50 mal auf ;(

Besonders ärgerlich ist das bei solchen Zeilen:
CPP:
strcpy(LogFont.lfFaceName, "Arial");

Weil man hier eine Buffer-Variable anlegen muss, um die Konvertierung "korrekt" zu gewährleisten.

-> Gibts da keine Einstellungssache oder ähnliches, um dieses Problem elegant zu lösen ?
_________________
- - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unsigned long
Junior JLI'ler



Anmeldedatum: 02.07.2006
Beiträge: 52

Medaillen: Keine

BeitragVerfasst am: 11.10.2006, 17:38    Titel: Antworten mit Zitat

Mat
Seit dem 2003er und 2005er hat sich einiges geändert! Vorallem: Microsoft baut jetzt mehr auf UTF-16, little endian als auf ANSI (gut so!).

LPCWSTR ist ein const wchar_t* und kein const char*.

Das ist kein Fehler Microsoftsseits, sondern eher Deinerseits, da Du nicht mit der Zeit gegangen bist, oder veralteten Code benutzt hast.

Willst Du zwischen beiden Zeichensätzen kompatibel bleiben mit Deinem Code musst Du das TEXT- oder _T-Makro benutzen.

Wenn Du auf ANSI bleiben möchtest (was jetzt für Vista, Windows Mobile usw. nicht ratsam ist!) musst Du über den Headern ein [cpp]#undef UNICODE[/cp] setzen.

Willst auf auf Unicode UTF-16, little endian aufbauen um für zukünftigere Windows-Versionen absolut kompatibel zu bleiben, darfst Du nur noch Unicode-Kompatible Funktionen benutzen (MSDN hilft Dir da erheblich weiter, bei Fragen einfach Fragen, kann Dir genug Stichwörter geben.)

Auch musst Du vor jedem String ein L für "Long Character" setzen, sowie char* auf wchar_t* umsetzen.

Das sind Deine drei Möglichkeiten Wink Ich bin für die Letztere. Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dragon
Super JLI'ler


Alter: 37
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 11.10.2006, 17:38    Titel: Antworten mit Zitat

Schalte Unicode aus. Das kannst du über die Projekteinstellung machen. Ich weiß nicht ob sowas funtktioniert: "#undef UNICODE", musst du mal probieren.

Edit: Ok, der Patrick war mal wieder schneller Wink
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mat
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 11.10.2006, 17:48    Titel: Antworten mit Zitat

Aus vernünftigkeit werde ich mal auf UNICODE aufbauen, auch wenn das ein paar Stunden Arbeit werden wird, da es sich doch um viele Projekte handelt.
Ich muss ja nicht gleich alle umstellen Wink

Danke für die ratsame Information!
_________________
- - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
unsigned long
Junior JLI'ler



Anmeldedatum: 02.07.2006
Beiträge: 52

Medaillen: Keine

BeitragVerfasst am: 11.10.2006, 17:59    Titel: Antworten mit Zitat

Mat
Auch in den C-Funktionen hat sich erheblich viel getan! Durch das CRT sind Secure Functions dazu gekommen, die Pufferüberläufe, runtime-Fehler usw. behandeln können.

Bestes Beispiel: fopen_s

Sehr guter Artikel dazu:
http://msdn2.microsoft.com/en-us/library/8ef0s5kh.aspx

Wenn Du in der MSDN z. B. strcpy als Suchbegriff eingibst, bekommst Du (ich glaub an 5. Stelle) folgende Definition:
CPP:
errno_t strcpy_s(
   char *strDestination,
   size_t sizeInBytes,
   const char *strSource
);
errno_t wcscpy_s(
   wchar_t *strDestination,
   size_t sizeInWords,
   const wchar_t *strSource
);
errno_t _mbscpy_s(
   unsigned char *strDestination,
   size_t sizeInBytes,
   const unsigned char *strSource
);
template <size_t size>
errno_t strcpy_s(
   char (&strDestination)[size],
   const char *strSource
); // C++ only
template <size_t size>
errno_t wcscpy_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscpy_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource
); // C++ only


Dort wird über die Fehlercodes berichtet, wofür diese gut sind usw. Daher sollte man bei einer aktuallisierung alter Programme umbedignt auch diese Funktionen benutzen. Smile Sie erleichtern einem das Debuggen und das Leben enorm. Very Happy

Auch wenn viele (Unwissenden) zuerst sagen: "So nen Müll brauch ich nicht." Jemand der aber weiß worum es geht, kann mehr erreichen und hats leichter Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum