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

  • »DirectX - Acriss« ist der Autor dieses Themas

Beiträge: 9

Wohnort: Emsland

Beruf: Schüler

  • Private Nachricht senden

1

23.01.2008, 21:43

Immer dasselbe mit CreateWindowEx() -.-

Hi
ich programmiere auf WindowsXP mit dem Dev C++.
Ich komme nur nicht so wirklich voran, weil mir immer ein Fehler ausgegeben wird,
den ich beim besten Willen nicht nachvollziehen kann :evil:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//Rückgabewert von CreateMainWindow

 return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen

                          "WindowClass",          // Klassenname

                          "Direct3D Class",       // Fenstertitel

                          WS_OVERLAPPEDWINDOW |   // Fenster

                          WS_VISIBLE,             // Eigenschaften

                          50, 50,                 // Anfangsposition

                          SCR_WIDTH, SCR_HEIGHT,  // und Groesse des Fenster

                          NULL,                   // Handle des Elternfensters

                          NULL,                   // Handle des Menues

                          hInstance,              // Anwendungsinstanz

                          NULL);                  // wird nicht benoetigt LINE 89

}

Und wirklich jedes Mal:

Zitat


In function `HWND__* CreateMainWindow(HINSTANCE__*)':
89 [Warning] passing NULL used for non-pointer converting 1 of `HWND__* CreateWindowExA(DWORD, const CHAR*, const CHAR*, DWORD, int, int, int, int, HWND__*, HMENU__*, HINSTANCE__*, void*)'
[Linker error] undefined reference to `Direct3DCreate9@4'
[Linker error] undefined reference to `DXGetErrorDescription9A@4'
[Linker error] undefined reference to `D3DXCreateFontIndirectA@12'
89 ld returned 1 exit status
C:\Dev-Cpp\Makefile.win [Build Error] [Projekt1.exe] Error 1



Verwunderlich ist, das es sich um eine Beispieldatei (besser BeispielDateien) aus einem Buch handelt -.-
[cpp:1]
if (leben == 0)
{
cout<<"GameOver";
}
return 0;
[/cpp:1]
(Nu)Metal(chore) RULEZ!

flux

Treue Seele

  • Private Nachricht senden

2

23.01.2008, 23:02

Du musst noch die richtigen Libs linken. Das sollten die sein:

#pragma comment (lib, "libd3dx9.a")
#pragma comment (lib, "libd3d9.a")

  • »DirectX - Acriss« ist der Autor dieses Themas

Beiträge: 9

Wohnort: Emsland

Beruf: Schüler

  • Private Nachricht senden

3

24.01.2008, 18:33

Hab ich gemacht
er sebe Fehler
[cpp:1]
if (leben == 0)
{
cout<<"GameOver";
}
return 0;
[/cpp:1]
(Nu)Metal(chore) RULEZ!

4

24.01.2008, 19:22

Das steht doch aber eigentlich sehr schön in der Fehlermeldung: Dein Compiler sagt Dir, dass NULL ein Pointer ist. CreateWindowEx verlangt im ersten Parameter aber keinen Pointer, sondern ein DWORD. Also muß es heißen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
return CreateWindowEx(0,                   // Keine erweiterten Stile nutzen

                          "WindowClass",          // Klassenname

                          "Direct3D Class",       // Fenstertitel

                          WS_OVERLAPPEDWINDOW |   // Fenster

                          WS_VISIBLE,             // Eigenschaften

                          50, 50,                 // Anfangsposition

                          SCR_WIDTH, SCR_HEIGHT,  // und Groesse des Fenster

                          NULL,                   // Handle des Elternfensters

                          NULL,                   // Handle des Menues

                          hInstance,              // Anwendungsinstanz

                          NULL);                  // wird nicht benoetigt LINE 89

5

24.01.2008, 19:40

Und genau in der Fehlermeldung steht, das es eine Warnung ist, dem das also im Prinzip auch so ausreicht, du dir aber mal angucken solltest, was da falsch ist :)

Aber der Fehler kommt vom Linker und sagt das die DirectX-Librarys nicht eingebunden worden sind.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

  • »DirectX - Acriss« ist der Autor dieses Themas

Beiträge: 9

Wohnort: Emsland

Beruf: Schüler

  • Private Nachricht senden

6

24.01.2008, 19:45

Ja
ich bin mit den ganzen Fehlermeldungen noch nicht so vertraut,
aber das mit der Warnung wusst ich schon :) :lol:

Ich habe die folgenden libs eingebunden:

C-/C++-Quelltext

1
2
3
4
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment (lib, "libd3dx9.a")
#pragma comment (lib, "libd3d9.a")
[cpp:1]
if (leben == 0)
{
cout<<"GameOver";
}
return 0;
[/cpp:1]
(Nu)Metal(chore) RULEZ!

7

24.01.2008, 20:17

Zitat von »"Deviloper"«

Und genau in der Fehlermeldung steht, das es eine Warnung ist,


CreateWindowEx im Topic-Titel, CreateWindowEx im Code-Ausschnitt und CreateWindowEx in der ersten Meldung. Und dann muss man doch alles lesen, das habe ich natürlich nicht gemacht, au weia. :roll:

Zu meiner Entschuldigung möchte ich sagen, dass zumindest meine Umgebung in diesem Fall noch soetwas meldet: "Warnung wird als Fehler interpretiert, es wurde keine object-Datei generiert."

Gut, Du wirst mir sicherlich gleich erklären, dass diese Option nur für Warmduscher taugt. Da stehe ich aber drüber. :-p

Werbeanzeige