JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Fehler beim Erstellen mit VS 2005 EE

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
launchee
Mini JLI'ler


Alter: 52
Anmeldedatum: 24.10.2006
Beiträge: 4
Wohnort: Chiemgau
Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 18:01    Titel: Fehler beim Erstellen mit VS 2005 EE Antworten mit Zitat

Hallo.

Hab Probleme beim Kompilieren bzw Erstellen des D3DDrawText.cpp (Kapitel 19). Habe in den Includeverzeichnissen Platform SDK und DirectX-SDK richtig angegeben, zusätzlich für dieses Projekt folgende Libraries: dxguid.lib, d3d9.lib, d3dx9.lib

Denoch bekomme ich beim Erstellen mit Visual C++ 2005 Express Edition folgende Fehlermeldung:

Kompilieren...
1>D3DDrawText.cpp

1>... \d3ddrawtext.cpp(4Cool : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [36]' in 'LPCWSTR' nicht möglich

1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
[Anmerkung: Diese Meldung kommt jeweils bei den nachfolgenden Fehlern nochmals auf]

1>...\d3ddrawtext.cpp(94) : error C2440: 'Initialisierung': 'const char [12]' kann nicht in 'LPCWSTR' konvertiert werden

1>...\d3ddrawtext.cpp(111) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [12]' in 'LPCWSTR' nicht möglich

1>...\d3ddrawtext.cpp(167) : error C2664: 'ID3DXFont::DrawTextW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich

1>...\d3ddrawtext.cpp(175) : error C2664: 'ID3DXFont::DrawTextW': Konvertierung des Parameters 2 von 'const char [15]' in 'LPCWSTR' nicht möglich

1>...\d3ddrawtext.cpp(239) : error C2664: 'strcpy': Konvertierung des Parameters 1 von 'WCHAR [32]' in 'char *' nicht möglich

1>Das Buildprotokoll wurde unter "...\directx_kap19\directx_kap19\Debug\BuildLog.htm" gespeichert.
1>directx_kap19 - 6 Fehler, 0 Warnung(en)


Was hat es damit auf sich? Kann mir jemand bitte helfen Smile ???

Vielen Dank, Ciao, Kai
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 18:18    Titel: Antworten mit Zitat

Hallo

Du kompilierst das Projekt als Unicode.

Du musst überall char durch wchar_t bzw. std::string durch std::wstring ersetzen und bei Übergabe von Zeichenketten muss ein 'L' davor, so:

MessageBox(L"text", ......

anstatt const char [12] schreibst du const wchar_t[12]
un so weiter.

Mfg Maxim
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 18:48    Titel: Antworten mit Zitat

Noch ein Tipp (schlagt mich nicht dafür Razz):
Falls - aus welchen Gründen auch immer - kein Unicode verwendet werden kann/soll, man kann in den Projekteinstellungen unter "Zeichensatz" auch den Multi-Byte-Zeichensatz einstellen Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
launchee
Mini JLI'ler


Alter: 52
Anmeldedatum: 24.10.2006
Beiträge: 4
Wohnort: Chiemgau
Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 18:57    Titel: Antworten mit Zitat

was mich trotzdem wundert ist, dass ich die D3DDrawText.cpp aus der CD zum Buch verwende (dort sollte es wohl richtig drinstehen, oder?).

Schlagt mich bitte auch nicht für meine Frage, aber wo kann ich Unicode bzw Multi-Byte-Zeichensatz in den Projekteigenschaften (VS 2005 EE) festsetzen?

Danke für Eure Antworten
Ciao, Kai
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 19:03    Titel: Antworten mit Zitat

alternativ gehts einfach über den Quelltext:
CPP:
#define UNICODE //unicode einschalten
#undef UNICODE //unicode ausschalten

Das schreibste halt in die erste Zeile deiner Quelldatei.
_________________
https://jonathank.de/games/


Zuletzt bearbeitet von Jonathan_Klein am 24.10.2006, 19:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 19:06    Titel: Antworten mit Zitat

Falls dus nicht über den Quellcode machen willst:
Im Projektmappen-Editor Recktsklick auf Projekt->Eigenschaften->Konfigurationseigenschaften->Allgemein->Projektstandards->Zeichensatz
(so gehts zumindest bei Visual Studio 2005 Standard)
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
launchee
Mini JLI'ler


Alter: 52
Anmeldedatum: 24.10.2006
Beiträge: 4
Wohnort: Chiemgau
Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 19:13    Titel: Antworten mit Zitat

So ist's gut Smile

Es klappt jetzt sowohl mit der "Methode" #undef UNICODE als auch über die Konfig.eigenschaften (hab's jetzt gefunden !) Smile

Danke vielmals für Eure netten und superschellen Antworten.

Super Forum hier Smile

Ciao , Kai
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 19:22    Titel: Antworten mit Zitat

Alternativ kannst du auch die Funktion
CPP:
ID3DXFont::DrawTextA

direkt aufrufen.

Wenn dein Projekt auf unicode eingestellt ist, wird die Funktion DrawText auf die Funktion DrawTextW umgeleitet. Diese nimmt nur unicode an. Ist kein unicode aktiv wird die Funktion DrawText auf die funktion DrawTextA umgeleitet welche das macht was du willst. Du kannst aber zu jeder zeit beide Funktionen direkt aufrufen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.10.2006, 20:38    Titel: Antworten mit Zitat

Ja, wobei man natürlich bedenken muss, das das ja alles Extra so ist, fals man mal schnell auf UNICODE umsteigen will. Dann braucht man nämlich die ganzen Funktionswaufrufe nicht zu ändenr, was man aber muss wenn man imemr die ...A Verison benutzt.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 25.10.2006, 05:52    Titel: Antworten mit Zitat

Stimmt schon aber solange es nicht alle Funktionen für beide Varianten gibt, ist es ganz gut zu wissen, dass man direkt darauf zugreifen kann.

Wenn man so einfach umstellen könnte, hätte er ja nicht diesen Compilerfehler Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 25.10.2006, 07:33    Titel: Antworten mit Zitat

Chriss hat Folgendes geschrieben:
Wenn man so einfach umstellen könnte, hätte er ja nicht diesen Compilerfehler Wink
Deshalb soll man ja auch nicht char oder wchar_t nutzen, sondern TCHAR und das TEXT-Makro
Also statt
CPP:
const char* Konstante="Test";
oder
CPP:
const wchar_t* Konstante=L"Test";
nutzt man lieber
CPP:
const TCHAR* Konstante=TEXT("Test");
oder lieber gleich die passenden Typedefs für const TCHAR*:
CPP:
LPCTSTR Konstante=TEXT("Test");
Das wird nämlich je nach gewählten Zeichensatz richtig überführt
Siehe MSDN Handling Unicode
_________________
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
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 25.10.2006, 08:16    Titel: Antworten mit Zitat

Chriss hat Folgendes geschrieben:

Stimmt schon aber solange es nicht alle Funktionen für beide Varianten gibt, ist es ganz gut zu wissen, dass man direkt darauf zugreifen kann.

AFE-GmdG hat Folgendes geschrieben:

Deshalb soll man ja auch nicht char oder wchar_t nutzen, sondern TCHAR und das TEXT-Makro


Da bringt einem TCHAR auch nicht viel.
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
Seite 1 von 1

 
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