DirectX8 mit C ?



  • Hi
    wiso geht das nicht ?

    D3DDISPLAYMODE d3ddm;
    g_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
    g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
    
    error C2039: 'GetAdapterDisplayMode' : is not a member of 'IDirect3D8'
    see declaration of 'IDirect3D8'
    

    brauch ich speziele C header ?

    - Sry falsches forum, wäre nett wenn das ein mod in Spieleprogrammierung verschieben könnte - danke

    Gruss Tony



  • Ich tippe einfach mal darauf, dass du p_gD3D falsch definierst, sollte so sein:

    IDirect3D8 *g_pD3D;
    


  • bluecode schrieb:

    Ich tippe einfach mal darauf, dass du p_gD3D falsch definierst, sollte so sein:

    IDirect3D8 *g_pD3D;
    

    ja so mach ich das auch, stehe nicht so wirklich auf versteckte pointer aliases 🙂
    verstehs einfach nicht, in der dokumentation steht "C/C++"
    habs auch schon so versucht:

    (*g_pD3D).GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
    

    was ja das gleiche ist - bei C weiß man ja nie 😃



  • TonyM schrieb:

    brauch ich speziele C header ?

    Compiler schrieb:

    see declaration of 'IDirect3D8'

    MSDN schrieb:

    Requirements

    Header: D3d8.h
    Link Library: D3d8.lib

    Hast Du Header und Library?



  • TonyM schrieb:

    habs auch schon so versucht:

    (*g_pD3D).GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
    

    was ja das gleiche ist - bei C weiß man ja nie 😃

    Hat das denn funktioniert?



  • danke für eure bemühungen bis hierhin schonmal 🙂

    1310-Logik schrieb:

    TonyM schrieb:

    brauch ich speziele C header ?

    Compiler schrieb:

    see declaration of 'IDirect3D8'

    MSDN schrieb:

    Requirements
    Header: D3d8.h
    Link Library: D3d8.lib

    Hast Du Header und Library?

    klar wenn ich als cpp compile dann gehts auch, nur als reines c nicht 😞

    bluecode schrieb:

    Hat das denn funktioniert?

    leider auch die gleiche fehlerausgabe.

    ich habe grade folgendes in der doku gefunden:

    The sample files in these tutorials are written in C++. If you are using a C compiler, you must make the appropriate changes to the files for them to successfully compile. At the very least, you need to add the vtable and this pointers to the interface methods.

    also ich hätte jetzt gesagt das die sample files geändert werden müssen,
    aber das kann nicht sein.
    deswegen stellt sich jetzt die frage: was genau ist eine vtable? und was interface methoden? - also müsste man doch die header ändern? 😮

    gruss Tony



  • 😕
    http://www.gamedev.net/community/forums/topic.asp?topic_id=319558

    Endurion schrieb:

    Are you per chance writing this code inside a .c file (instead of .cpp)?
    AFAIK DirectX has a fallback to calling macros with a faked vtable when you're using plain C.

    Lösung hab ich noch keine gefunden, aber vielleicht hilft Dir das?



  • Google Groups->error+C2039+C+DirectX
    und suche noch weiter...



  • Super Danke!
    habs jetzt die betroffne zeile gändert in:

    IDirect3D8_GetAdapterDisplayMode(g_pD3D, D3DADAPTER_DEFAULT, &d3ddm);
    

    dann gehts
    ich habs auch schon vorher so probiert allerdings hatte ich das so:

    g_pD3D->IDirect3D8_GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
    

    nah dran aber jetzt gehts ja 😃

    Gruss Tony



  • OO in C 😉



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten