 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 11.09.2006, 21:34 Titel: MVS C++ 2005, Kompiler Fehler |
|
|
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 |
|
 |
Loigie Junior JLI'ler

Anmeldedatum: 29.06.2004 Beiträge: 52 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 12.09.2006, 09:23 Titel: |
|
|
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 |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 12.09.2006, 12:21 Titel: |
|
|
Geht bei mir auch. Schau mal, ob die Reihenfolge der Pfade (Header, Libs, usw.) okay ist. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 12.09.2006, 12:57 Titel: |
|
|
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 |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 12.09.2006, 13:17 Titel: |
|
|
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 |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 12.09.2006, 13:41 Titel: |
|
|
Die Pfade zum Platform SDK sollen ganz oben stehen. |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 12.09.2006, 13:50 Titel: |
|
|
Wegen sowas macht der Zicken? wenn sie nicht ganz obenstehen. Hab fast ein Wutanfall bekommen. -.- |
|
Nach oben |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 12.09.2006, 14:26 Titel: |
|
|
Christian Rousselle hat Folgendes geschrieben: | Die Pfade zum Platform SDK sollen ganz oben stehen. |
Bei mussten die Pfade zum Platform SDK ganz unten stehen Und jetzt klappt es. |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 13.09.2006, 09:33 Titel: |
|
|
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 |
|
 |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 13.09.2006, 14:28 Titel: DAnke |
|
|
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 |
|
 |
Mat Senior JLI'ler

Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 11.10.2006, 17:26 Titel: Anderer Compilerfehler |
|
|
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 ...
Ä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 |
|
 |
unsigned long Junior JLI'ler

Anmeldedatum: 02.07.2006 Beiträge: 52
Medaillen: Keine
|
Verfasst am: 11.10.2006, 17:38 Titel: |
|
|
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 Ich bin für die Letztere.  |
|
Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 11.10.2006, 17:38 Titel: |
|
|
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  _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
 |
Mat Senior JLI'ler

Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 11.10.2006, 17:48 Titel: |
|
|
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
Danke für die ratsame Information! _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
 |
unsigned long Junior JLI'ler

Anmeldedatum: 02.07.2006 Beiträge: 52
Medaillen: Keine
|
Verfasst am: 11.10.2006, 17:59 Titel: |
|
|
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. Sie erleichtern einem das Debuggen und das Leben enorm.
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  |
|
Nach oben |
|
 |
|
|
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
|