DirectInput8Create失败:E_INVALIDARG
我正在使用DirectInput与Direct3D 11,并编译为x64,我从这一行得到一个E_INVALIDARG:
HRESULT hr = DirectInput8Create(hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, reinterpret_cast<void **>(&this->_d8Input), 0);
当我设置一个断点来看看发生了什么时,我没有任何无效参数的迹象。我的hInstance是有效的,_d8Input指针也是如此,DIRECTINPUT_VERSION设置为0x0800。
我之前使用D3D9的直接输入,以完全相同的方式并没有任何问题。
我错过了什么?
谢谢。
没有找到相关结果
已邀请:
2 个回复
勺的驴吓识
坝硷操
在_tWinMain函数中我添加了:
对于链接器选项,我添加了dinput8.lib和dxguid.lib 编译,检查应用程序是否为64位,并且干净地执行而不生成无效的参数消息。我在outPtr变量中得到一个有效值。我甚至查看了dinput.h文件的内容,这似乎表明DIRECTINPUT_VERSION默认设置为0x0800。 我很茫然,这应该在32位和64位都能正常工作。 当我使用NULL值而不是outPtr时,我得到一个无效的指针错误,所以这似乎表明该问题不是指针中的无效值。 当我使用除了有效的hInstance以外的任何东西时,我得到一个无效的参数 - 当我用0替换该值时,我得到了你看到的相同错误。也许hInstance值未正确初始化?