2

我正在尝试使用 DirectInput 来控制学校项目的小型 3D 应用程序上的相机移动。我在 VS2010 上使用 C++。

根据这个链接,我需要在我的项目属性上链接dxguid.libdinput8.lib 。所以,我添加了它们。

这导致 VS2010 无法读取dxguid.lib。因此,我必须从Microsoft 的下载页面下载并安装 DirectX SDK 。这导致了 S1023 错误,用微软的解决方案解决

我不断收到其他编译错误,一些搜索将我带到了这个站点。在这样做之后,我现在只得到 2 个未解决的外部:

error LNK2001: unresolved external symbol _IID_IDirectInput8W
error LNK2019: unresolved external symbol _DirectInput8Create@20

这是相关代码,取自第一个链接,稍作修改:

bool GamePad::InitDirectInput(void)
{
    if(FAILED(DirectInput8Create(GetModuleHandle(NULL),
                             DIRECTINPUT_VERSION,
                             IID_IDirectInput8,
                             (void**)&m_pDIObject,
                             NULL)))
     {
     MessageBox(NULL,
            L"DirectInput8Create() failed!",
            L"InitDirectInput()",
            MB_OK);
    return false;
    }

    return true;
}

我所做的每次搜索都会返回到上面提供的相同解决方案或类似的解决方案。我找不到我没有做过的事情。任何人都可以提供一个想法吗?问题可能是我使用的是 Windows 8 吗?提前致谢。

更新

我设法通过使用解决了第一个问题

#include <InitGuid.h>

但第二个仍然存在,令我沮丧的是......

4

2 回答 2

1

确保您的包含目录具有以下条目:

$(DXSDK_DIR)include

现在为库目录设置以下内容:

$(DXSDK_DIR)lib\x86

然而,在安装 Visual Studio 之后安装 Directx sdk 存在一个已知问题。如果前面的建议没有解决问题,请尝试卸载 Visual Studio(确保也删除运行时的)。安装directx sdk后再次安装。然后使用我在这里写的设置,它可能会起作用(它对我有用)。

于 2013-05-07T19:54:28.850 回答
0

我有同样的错误,并通过链接 dinput8.lib 和 dxguid.lib 解决了它。有趣的是,我不必包含 InitGuid.h。

于 2017-11-29T04:45:35.957 回答