【发布时间】:2011-03-06 20:19:42
【问题描述】:
我将 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 中使用过直接输入,方式完全相同,没有任何问题。 我错过了什么?
谢谢。
【问题讨论】:
-
DIRECTINPUT_VERSION 在你之前设置 #include
? -
@Peter Huene - DirectX SDK 包含一个用于 32 位和 64 位应用程序的 dinput8.lib
-
在我删除评论后重新添加评论(因为这是一个没有经验的猜测),但没有看到 Petesh 已回复。解释原始评论:“我的猜测是没有 DX8 x64 实现。第一个 x64 DX 似乎是 2005 年对 9.0 的更新”。
-
@Petesh,是的,它是在包含 @Peter Huene 之前设置的,我使用的是 DX11 和 DI8,经过一些测试,它只是失败了,如果我使用 32 位或 64 位没有区别。
标签: c++ 64-bit directx-11 directinput