Beispiel für DirectX9.C Problem
-
TGGC schrieb:
Du versuchst ASCII in Unicode Zeichen zu casten. Das geht nicht! f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
Hallo TGCC,
danke für deinen Post leider habe ich mit dem Thema gerade erst angefangen. Laut Buch sollte der Code so gehen wie ich Ihn hier gepostet habe, daher weiß ich leider (noch) nicht was ich ändern muss. Im Buch wird der Code erklärt aber ich weiß nicht wo ich ansetzen muss damit es geht. Es würde mich ehr freuen wenn du mir die Zeilen nummer sagen könnstet welche ich überarbeiten muss. Da ich mit
'const char [48]' in 'LPCWSTR' nicht möglich
(noch) nicht viel anfangen kann.Gruß JDJ
-
Die Zeilennummer sagt dir der Compiler in der Fehlermeldung. f'`8k
BTW: Was hat der Fehler mit DX zu tun?
AutocogitoGruß, TGGC (\-/ has leading)
-
TGGC schrieb:
Die Zeilennummer sagt dir der Compiler in der Fehlermeldung. f'`8k
Autocogito
BTW: Was hat der Fehler mit DX zu tun?
Gruß, TGGC (\-/ has leading)
Soweit wie ich verstanden habe muss ich
const char konvertieren in LPCWSTR und das geht mit MultiByteToWideChar. Aber wie wende ich das an? Damit habe ich noch nicht gearbeitet und aus der MS hilfe zu MultiByteToWideChar werd ich da nicht schlau.Gruß JDJ
-
Ja, das könntest du so konvertieren. Aber warum legst du deine Stringliterale dann nicht gleich als Unicode an? f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
-
TGGC schrieb:
Ja, das könntest du so konvertieren. Aber warum legst du deine Stringliterale dann nicht gleich als Unicode an? f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
Wie Konvertiere ich das bei einer MessageBox? Laut Hilfe von MS ist der MessageBox Inhalt: LPCTSTR.
-
-
Hallo
Welche IDE verwendest du? Visual Studio? -> dann schalte mal bei den Projektoptionen unter Character Set Multibyte ein.
chrische
P.S.: Laß dich nicht verunsichern.
-
chrische5 schrieb:
Hallo
Welche IDE verwendest du? Visual Studio? -> dann schalte mal bei den Projektoptionen unter Character Set Multibyte ein.
chrische
P.S.: Laß dich nicht verunsichern.
Ich benutze Microsoft Visual C++ 2005 Express Edition.
Ok ich schalte es ein und dann probiere ich es nochmal.
-
chrische5 schrieb:
Welche IDE verwendest du? Visual Studio?
Wer lesen kann, ist klar im Vorteil.

Gruß, TGGC (\-/ has leading)
-
Hallo
TGGC schrieb:
chrische5 schrieb:
Welche IDE verwendest du? Visual Studio?
Wer lesen kann, ist klar im Vorteil.

Gruß, TGGC (\-/ has leading)
Da kann ich dir in diesem Fall nur recht geben.
chrische
-
chrische5 schrieb:
Hallo
Welche IDE verwendest du? Visual Studio? -> dann schalte mal bei den Projektoptionen unter Character Set Multibyte ein.
chrische
P.S.: Laß dich nicht verunsichern.
Hi Chrische5,
ich habe bei mir sämtliche Optionen durchsucht aber so einen Punkt den du beschreibst finde ich nicht. Wo genau soll dieser sein?Gruß JDJ
-
alt+f7, Configuration_Properties->General->Project_Defaults: Character Set
-
hellihjb schrieb:
alt+f7, Configuration_Properties->General->Project_Defaults: Character Set
Ich habe es jetzt umgestellt bekomme jetzt aber die FM:
Test.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__MessageBoxA@16" in Funktion "_WinMain@16".
Test.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion "_WinMain@16".
MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".Der Code sieht jetzt so aus:
#include <Windows.h> #include <StdIO.h> #include <D3D9.h> int g_iNumAdapters; //Anzahl der Adapter D3DADAPTER_IDENTIFIER9* g_pAdapters; //Adapterliste PDIRECT3D9 g_pD3D = NULL; //IDirect3D9-Schnitstelle int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd) { char acAdapterInfo[1024]; //Schnittstelle für Direct3D erzeugen g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); if(g_pD3D ==NULL) { //Fehler MessageBox(NULL, "Fehler beim Erzeugen von Direct3D Schnittstelle", "Fehler", MB_OK | MB_ICONEXCLAMATION); return 1; } //Adapter Anzahl ermitteln g_iNumAdapters = g_pD3D->GetAdapterCount(); //Speicher reservieren und Informationen über jeden Adapter sammeln g_pAdapters = new D3DADAPTER_IDENTIFIER9[g_iNumAdapters]; for(int iAdapter = 0; iAdapter < g_iNumAdapters; iAdapter++) { if(FAILED(g_pD3D->GetAdapterIdentifier(iAdapter, 0, &g_pAdapters[iAdapter]))) { //Fehler MessageBox(NULL, "Adapter Information konnte nicht abgefragt werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION); //Aufräumen g_pD3D->Release(); delete[] g_pAdapters; return 1; } //Adapterinformation anzeigen sprintf(acAdapterInfo, "Adapter-ID: %d\n Name: %s\n Treiber: %s nTreiberversion: %d", iAdapter, g_pAdapters[iAdapter].Description, g_pAdapters[iAdapter].Driver, g_pAdapters[iAdapter].DriverVersion); MessageBox(NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONINFORMATION); } //Aufräumen g_pD3D->Release(); delete[] g_pAdapters; return 0; }
-
Die externen Symbole MessageBox und Direct3DCreate9, welche du in der WinMain benutzt, können nicht aufgelöst werden. Weiterhin hast du keine main-Funktion definiert. f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
-
#pragma comment (lib, "d3d9.lib") #pragma comment (lib, "d3dx9.lib") #pragma comment (lib, "dinput.lib") #pragma comment (lib, "dinput8.lib") #pragma comment (lib, "dxguid.lib") #pragma comment (lib, "Winmm.lib")irgendwelche davon brauchst du
-
TGGC schrieb:
Die externen Symbole MessageBox und Direct3DCreate9, welche du in der WinMain benutzt, können nicht aufgelöst werden. Weiterhin hast du keine main-Funktion definiert. f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
Ich finde es schwierig als Anfänger einen Fehler zu finden den es laut Buch nicht geben dürfte, daher würde ich mich sehr freuen wenn du mir den Code so Posten würdest wie er Funktionieren sollte. Da du das Rätzel ja anscheinend zu lösen vermagst.

-
-
Hallo
Versuch den Code mal zu ändern wie Xindon es geschrieben hat. TGGC gibt bestenfalls lustige Antworten oder er zeigt vor allem Leuten, die nicht so viel Ahnung haben wie er (und das sind bbei ihm gefühlte 100%) gerne, was er alles so auf dem Kasten hat.
chrische
-
Also ich würde dem Linker ja lieber über seine Parameter sagen, wo er die Symbole herkriegt, anstatt das noch zusätzlich in den Code zu frickern. Im Original (Buch) gings ja auch so. f'`8k
@chrische5: Neidisch?
Autocogito
Gruß, TGGC (\-/ has leading)
-
Hallo
TGGC schrieb:
@chrische5: Neidisch?

Wenn ich ehrlich bin, muss ich sagen, dass du wahrscheinlich wirklich um Welten besser programmieren kannst als ich und ich würde das sicher auch gerner kennen. Deine infantile oder pubertäre Art, die allerdings bräuchte ich nicht dazu. Das soll keine Beleidigung sein, aber diese Gottnummer, die ist doch maxinmal eine Woche lustig, aber wenn man einmal angefangen hat, ist es wahrscheinlich gar nicht so leicht mal wieder ernst genommen zu werden.
chrische