Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Ashnarott

Frischling

  • »Ashnarott« ist der Autor dieses Themas

Beiträge: 57

Beruf: Student Maschinenbau

  • Private Nachricht senden

1

03.10.2007, 12:34

Probleme mit InitWindow.cpp bei Beispielprogramm 01

Ich bräuchte Hilfe ich bekomme andauernd die Fehlermeldung,
bei InitWindow.cpp

C-/C++-Quelltext

1
2
3
4
5
6
1>d:\eigene dateien\visual studio 2005\projects\3dprogrammierung\allgemeines\initwindow.cpp(23) : error C2440: 'static_cast': 'const char [16]' kann nicht in 'LPCWSTR' konvertiert werden
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.
1>d:\eigene dateien\visual studio 2005\projects\3dprogrammierung\allgemeines\initwindow.cpp(51) : error C2440: 'static_cast': 'const char [16]' kann nicht in 'LPCWSTR' konvertiert werden
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.
1>d:\eigene dateien\visual studio 2005\projects\3dprogrammierung\allgemeines\initwindow.cpp(51) : error C2440: 'static_cast': 'char *' kann nicht in 'LPCWSTR' konvertiert werden
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.



Ich hab versucht die Fehler mit reinterpret_cast<LPCWSTR>() wegzubekommen, darauf lies es sich auch ausführen. Allerdings
kam als Fenstername nur vierecke heraus. Ich wollte fragen wie man dies beheben kann. Hab auch schon die Forensuche genutzt und gegoogelt, aber bin nicht schlauer geworden.

spacegaier

Alter Hase

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

2

03.10.2007, 12:40

Um einen LPWSTR zu erhalten setzt den Text in Anführugsnzeichen und setzte ein großes L davor.

Bsp:

C-/C++-Quelltext

1
L"Fenstertext"

Ashnarott

Frischling

  • »Ashnarott« ist der Autor dieses Themas

Beiträge: 57

Beruf: Student Maschinenbau

  • Private Nachricht senden

3

03.10.2007, 13:07

Vielen vielen Dank. Jetzt klappt's ohne Probleme :D

Aber beim 2 Beispielprogramm gibts wieder Probleme :(.
Ich bekomme Link errors obwohl ich alle Dateien den Projekt hinzugefügt habe und
die entsprechenden Libariers gelinkt habe(TriBaseD.lib D3D9.lib DXErr.lib)
trotzdem kommt folgende Fehlermeldung

C-/C++-Quelltext

1
2
3
4
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorString9W@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorDescription9W@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".
1>D:\Eigene Dateien\Visual Studio 2005\Projects\3DProgrammierung\Kapitel 2\Beispielprogramm 02\Debug\Beispielprogramm 2.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.


hat jemand eine Idee?

Ich00nix

Frischling

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

4

03.10.2007, 18:44

link einfach mal die anderen TriBase.libs dann müsste das funktionieren

Ashnarott

Frischling

  • »Ashnarott« ist der Autor dieses Themas

Beiträge: 57

Beruf: Student Maschinenbau

  • Private Nachricht senden

5

03.10.2007, 20:04

Ok jetzt kommen keine Linker errors mehr. Vielen Danke für den Tipp :)
Aber es kommen wieder konvertierungs-fehler :( . Und zwar das char acFilename[256]; nicht in LPWSTR konvertiert werden kann.Hab auch schon nach gegoogelt und es mit reinterpret_cast<wchar_t*> probiert, kamen dann aber wieder die bekannten Vierecke im Auswahlmenü. Ich wollte daher Fragen ob mir jemand alle Dateien aus dem Ordner Allgemeines schicken kann, welche für den Microsoft Visual C++ 2005 Express Edition Compiler geignet sind, und zwar an martin.fees@gmx.de. Ich wäre auch für Hilfe beim Konvertieren von der Variablen sehr dankbar ;). Sorry bin halt doch noch ein Noob im programmieren.

mfg.

spacegaier

Alter Hase

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

6

03.10.2007, 22:45

Ich tippe mal das acFilename[256] ein charArray ist. Nimm anstatt diesem einfach ein wchar_t oder einen TCHAR.

Bsp:

C-/C++-Quelltext

1
wchar_t test[] = L"Mein Text";

oder

C-/C++-Quelltext

1
TCHAR test_2[] = L"Mein zweiter Text";

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

03.10.2007, 23:00

Ne, reinterpret_cast ist definitiv das falsche. Char zu wchar_t geht mit Standard C++ Mitteln so:

C-/C++-Quelltext

1
2
3
4
const char* foo = "Hallo";
wchar_t bar[ 6 ];

std::use_facet< std::ctype< wchar_t > >( std::locale() ).widen( foo, foo + strlen( foo ), bar );
@D13_Dreinig

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

04.10.2007, 09:59

wenn ich mir das ganze so ansehe sind das allet probleme mit unicode. stell einfach dein projekt auf ascii um dann haste die ganzen probleme mit wchar und char_t usw. nicht.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

04.10.2007, 11:52

Oder konsequent eins von beiden verwenden, bzw kompatibel zu beidem bleiben. ;)

Zitat von »"spacegaier"«

C-/C++-Quelltext

1
TCHAR test_2[] = L"Mein zweiter Text";


Wenn dann:

C-/C++-Quelltext

1
TCHAR test_2[] = _T( "Mein zweiter Text" );
@D13_Dreinig

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

10

04.10.2007, 17:22

Zitat von »"David_pb"«

Oder konsequent eins von beiden verwenden, bzw kompatibel zu beidem bleiben. ;)

Naja... man muss zugeben, dass das nen schwieriges Unterfangen ist, wenn man auf der TriBase aufbaut ;)

Werbeanzeige