DirectInput und C++ Builder XE6



  • Hallo zusammen,
    seit gestern versuche ich Direct Input mit dem C++ Builder XE 6 zu initialisieren, aber es gelingt mir einfach nicht. Obwohl ich die DirectX SDK 2010 in den Compileroptionen in die Include und Lib Pfade eingebunden habe (ebenfalls in den Projekt Optionen) und die dinput.h inkludiert habe, meckert der Linker folgendes:

    [ilink32 Fehler] Error: Nicht auflösbares externes '_IID_IDirectInput8W' referenziert von E:\PROJEKTE\DINPUT\WIN32\DEBUG\UNIT1.OBJ

    [ilink32 Fehler] Error: Nicht auflösbares externes 'DirectInput8Create' referenziert von E:\PROJEKTE\DINPUT\WIN32\DEBUG\UNIT1.OBJ

    Kommentiere ich in folgendem Beispiel

    //InitDirectInput(hDlg);
    

    aus, wird das Projekt kompiliert 😕 Weiß jemand von euch was ich hier falsch mache?

    #include <dinput.h>
    
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
    	TButton *Button1;
    private:	// Benutzer-Deklarationen
    
    LPDIRECTINPUT8         g_pDI;
    LPDIRECTINPUTDEVICE8   g_Keyb;
    HWND hDlg;
    HRESULT hr;
    void __fastcall InitDirectInput(HWND hDlg);
    
    public:		// Benutzer-Deklarationen
    	__fastcall TForm1(TComponent* Owner);
    };
    
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    
    	g_pDI = NULL;
        g_Keyb = NULL;
    	hDlg = NULL;
    
    	hDlg = Form1->Handle;
    	InitDirectInput(hDlg);
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::InitDirectInput(HWND hDlg)
    {
    
        //-------------------------------------------------------------------------
        //  Register with the DirectInput subsystem and get a pointer
        //-------------------------------------------------------------------------
        if( FAILED( hr = DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION,IID_IDirectInput8, (VOID**)&g_pDI, NULL )))
        ShowMessage("- Error: failed to create DirectInput interface");
    
        //--------------------------------------------------------------------------
        //  Init default input devices
        //--------------------------------------------------------------------------
         if (FAILED(hr = g_pDI->CreateDevice(GUID_SysKeyboard, &g_Keyb, NULL)))
         ShowMessage("- Error: Can´t init keyboard");
    
         //------------
        //- default input
        //-----------------------------
        if( FAILED( hr = g_Keyb->SetDataFormat(&c_dfDIKeyboard)))
        ShowMessage("- Error: failed to set keyboard data format");
    
         //---------------
         // default devices coop
         //-----------------------------
         if(FAILED(hr = g_Keyb->SetCooperativeLevel( hDlg , DISCL_NONEXCLUSIVE | DISCL_BACKGROUND))) //Keyboard zugriff
         ShowMessage("Error: failed to set keyboard cooperative");
    
    }
    
    //-------------------------------------------------------------------------------------------------------------------
    


  • Update: Selbst mit dem DirectX 2007 SDK und den C++ Builder Libs von http://www.clootie.ru/cbuilder/ bleibt der Linker Error unverändert.

    Früher war mit dem BCB 6 doch alles kein Thema wenn es um DirectInput ging, ist das heutzutage ein grundsätzliches Problem mit dieser IDE?



  • Ok, sehr komisch....früher im BCB6 reichte es aus die Pfade der Libs und Header Dateien in die entsprechenden Verzeichnispfade des Projekte zu setzen und gut ist. Hier musste ich nun noch explizit die benötigten Libs manuell dem Projekt hinzufügen und nun läufts.


Log in to reply