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

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

1

25.07.2006, 21:20

Fehler beim Erzeugen der Direct3D-Schnittstelle!

Hab mal wieder ein total blödes Problem, aber des ist bei mir ja nix neues :( .

Ich will nur eine D3D-Schnittstelle erstellen. Irgendwas klappt net. Nutze unten stehenden Code und es kommt immer das Fenster: "Fehler beim Erzeugen der Direct3D-Schnittstelle!"

Habe die d3d9.lib gelinkt und eigentlich auch die Verzeichnisse richtig bekannt gegeben. Es gibt hier nur eine Unsihcerheit:

Habe das DirectX SDK June06. Hier gibt es im Ordner Lib zwei Möglichkeiten: x64 oder x86. Wenn ich x64 nehme bekomme ich einen Linkerfehler, wenn ich x86 nehme, habe ich obiges Problem. Vielleicht habe ich hier den falschen Ordner ausgewählt und noch was anderes falsch gemacht?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <windows.h>
#include <StdIO.h>
#include <D3D9.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   PSTR szCmdLine, int iCmdShow)
{
    PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(pD3D)
    {
        MessageBox(NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!","Fehler",MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }

    int iNumAdapters = pD3D->GetAdapterCount();

    D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];

    for(int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++)
    {
        if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &pAdapters[iAdapter])))
        {
            MessageBox(NULL, "Adapterinformationen konnten nicht abgefrat werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION);
            
            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }

        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\n"
            "Name: %s\n"
            "Treiber: %s\n"
            "nTreiberversion: %d",
            iAdapter,
            pAdapters[iAdapter].Description,
            pAdapters[iAdapter].Driver,
            pAdapters[iAdapter].DriverVersion);

        MessageBox(NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONINFORMATION);
    }

    pD3D->Release();
    delete[] pAdapters;

    return 0;
}


EDIT: Was bewirkt eigentlich: if(pD3D){}? Was wird da am pD3D überprüft?

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

2

25.07.2006, 21:32

Re: Fehler beim Erzeugen der Direct3D-Schnittstelle!

ARGH
ARGH
ARGH

also wenn du eine Schnittstelle erzeugst sagt dein Programm Fehler ist es das was du willst :?:

Nein mal im ernst die abfrage muss if(!pD3D) sein, denn einen Wert soll der Zeiger ja haben?
Was es alles gibt, das ich nich brauche - Aristoteles

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

25.07.2006, 21:33

es wird geprüft ob pD3D ein gültiger Zeiger ist, also nicht auf NULL zeigt.

Ich glaub du hast das SDK nicht richtig installiert

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

4

25.07.2006, 21:33

Habs grad auch gemerkt. Hab es aber so gelöst (ist aber das gleiche):

if(FAILED(pD3D)){}

Trotzdem thx

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

5

25.07.2006, 21:36

sicher das das geht?

denn Failed prüft afaik auf == 0 und dann hättest du wieder den gleichen mist. bei der apfrage, weil es nur ein Zeiger ist einfach per !
Was es alles gibt, das ich nich brauche - Aristoteles

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

25.07.2006, 21:36

nimm das ! ... hab gar ned gesehen das das fehlt ^^

Anonymous

unregistriert

7

25.07.2006, 21:47

Zitat von »"CW_Kovok"«

sicher das das geht?

denn Failed prüft afaik auf == 0 und dann hättest du wieder den gleichen mist. bei der apfrage, weil es nur ein Zeiger ist einfach per !


#define NULL 0

:roll:

Und ja ein Ausrufezeichen ist die sinnvollste Lösung ;)

EDIT: Oo hä was hatte ich denn jetzt wieder für Gedankengänge @ Kovok!? :oops:

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

8

25.07.2006, 21:48

Jo geht beides. Nehm aber natürlich eure Variante. Danke nochmal :) .

Werbeanzeige