Direct Input 8 Prob



  • @TomasRiker:
    Ich schreib das ganze eigentlich aus dem Buch "Jetzt lerne ich Spieleprogrammierung mit DX und VC++" ab und da steht das so drin
    Haben sie das in DX9 irgendwie geändert?
    In DX8 is es auf jeden Fall "dinput.h"



  • @Headhunter:
    Ich hab gesucht und gefunden, aber es funzt trotzdem nicht...

    #define DIRECTINPUT_VERSION 0x0700

    (ich denke mal das meinst du)

    Ich habs jetzt reingeschrieben, aber nun bekomm ich nur noch mehr Fehler...
    Da muss noch was anderes falsch seiin...

    // Input.h: Schnittstelle für die Klasse CInput.
    //
    //////////////////////////////////////////////////////////////////////
    
    #if !defined(AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_)
    #define AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #define DIRECTINPUT_VERSION 0x0700 
    
    #include<dinput.h>
    #include"Log.h"
    
    class __declspec(dllexport)CInput  
    {
    private:
        CLog log;
        LPDIRECTINPUT8 lpDI;
        LPDIRECTINPUTDEVICE8 lpDIMouse;
    
        void CleanUpDirectInput();
    
    public:
        CInput();
        virtual ~CInput();
        BOOL InitDirectInput(HINSTANCE hinst);
    
    };
    
    #endif // !defined(AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_)
    


  • Ich war mir nicht ganz sicher (bin hier an einem PC ohne DX SDK ;)), da habe ich bei Google mal nach "DInput8.h" gesucht und es gab Treffer, auch ein Artikel von Microsoft. Demnach wird es wohl so sein. Wie gesagt, ich kann es von hier aus nicht prüfen.



  • Poste die Fehler doch mal 🙂



  • ne kleine vermutung:

    #define DIRECTINPUT_VERSION 0x0700
    

    und

    LPDIRECTINPUT8
    

    bzw

    LPDIRECTINPUTDEVICE8
    

    können sich doch eigentlich garnicht vertragen, oder!?

    wenn, dann müsste es doch schon
    [code]#define DIRECTINPUT_VERSION 0x0800[/code]
    heißen, oder irre ich mich da?



  • @meian: Der, in dem Thread, ausdem ich 0x0700 hab hatte auch DX8

    hier die Fehlermeldung:

    --------------------Konfiguration: Input - Win32 Debug--------------------
    Kompilierung läuft...
    Input.cpp
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(20) : warning C4251: 'log' : class 'CLog' benoetigt eine DLL-Schnittstelle, die von Clients von class 'CInput' verwendet wird
            e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\log.h(17) : Siehe Deklaration von 'CLog'
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(21) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'lpDI'
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(21) : error C2501: 'LPDIRECTINPUT8' : Fehlende Speicherklasse oder Typbezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(21) : error C2501: 'lpDI' : Fehlende Speicherklasse oder Typbezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(22) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'lpDIMouse'
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(22) : error C2501: 'LPDIRECTINPUTDEVICE8' : Fehlende Speicherklasse oder Typbezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.h(22) : error C2501: 'lpDIMouse' : Fehlende Speicherklasse oder Typbezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.cpp(13) : error C2065: 'lpDI' : nichtdeklarierter Bezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.cpp(14) : error C2065: 'lpDIMouse' : nichtdeklarierter Bezeichner
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.cpp(31) : error C2227: Der linke Teil von '->Unacquire' muss auf Klasse/Struktur/Union zeigen
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.cpp(32) : error C2227: Der linke Teil von '->Release' muss auf Klasse/Struktur/Union zeigen
    e:\-=eigene dateien=-\-=coding=-\c plus plus\-=projekte=-\input\input.cpp(38) : error C2227: Der linke Teil von '->Release' muss auf Klasse/Struktur/Union zeigen
    Fehler beim Ausführen von cl.exe.
    
    Input.dll - 11 Fehler, 1 Warnung(en)
    

    Er kennt einfach des ganze DI-Zeug nich...

    Die Warnung ist hier nicht relevant



  • Ich tippe mal, dass Du die #include-Anweisung für die DirectInput-Headerdatei irgendwie ungünstig platziert hast. Zum Beispiel so:

    INPUT.CPP:
    #include "Input.h"
    #include <DInput.h>

    INPUT.H:
    LPDIRECTINPUT8 pDI;
    ...

    Ansonsten probier's mal mit DInput8.h, wenn es die Datei überhaupt gibt.



  • Ich habs so inkludiert:

    // Input.h: Schnittstelle für die Klasse CInput.
    //
    //////////////////////////////////////////////////////////////////////
    
    #if !defined(AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_)
    #define AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #define DIRECTINPUT_VERSION 0x0800 
    
    #include<dinput.h>
    #include"Log.h"
    
    class __declspec(dllexport)CInput  
    {
    private:
        CLog log;
        LPDIRECTINPUT8 lpDI;
        LPDIRECTINPUTDEVICE8 lpDIMouse;
    
        void CleanUpDirectInput();
    
    public:
        CInput();
        virtual ~CInput();
        BOOL InitDirectInput(HINSTANCE hinst);
    
    };
    
    #endif // !defined(AFX_INPUT_H__F130B9E3_7F25_4A49_BF46_4669331B85ED__INCLUDED_)
    


  • Und was ist nun mit DInput8.h? Hast Du das mal probiert? Wäre ja die allereinfachste Lösung...



  • Hab ich versucht, aber des geht nicht...

    Ich weiß nich, was ich anders mach...
    Ich hab mal n Beispiel aus dem "Jetzt lerne ich..."-Buch geöffnet, indem Input gezeigt wird und das kompiliert er fehlerlos...

    des Beispiel hat auch <dinput.h>, im linker dxguid und dinput8... und sonst weiß ich nicht, was man einstellen kann, was bei mir anders sein könnte...


Anmelden zum Antworten