gpt4 book ai didi

c++ - DirectInput 未解析的外部符号

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:21 28 4
gpt4 key购买 nike

这个让我抓狂。我已经尝试了我能想到的一切。以下是 DirectInput 代码的相关部分。

BOOL CALLBACK EnumDevicesCallback(const DIDEVICEINSTANCE* DeviceInfo,   VOID* Context);

if(DirectInput8Interface == DI_OK)
{
DirectInput8InterfacePointer->EnumDevices(
DI8DEVCLASS_GAMECTRL,
(LPDIENUMDEVICESCALLBACKA) EnumDevicesCallback,
NULL,
DIEDFL_ATTACHEDONLY);
}

当我尝试编译时,出现错误:

unresolved external symbol "int __stdcall EnumDevicesCallback(struct DIDEVICEINSTANCEA const *,void *)" (?EnumDevicesCallback@@YGHPBUDIDEVICEINSTANCEA@@PAX@Z) referenced in function _WinMain@16.

可以看到,编译器找不到的外部符号与EnumDevicesCallback函数的DIDEVICEINSTANCE参数有关。那不应该,因为我已经包含了 dinput.h 并链接到 dinput8.lib 和 dxguid.lib。我什至尝试在自己的代码中定义 DIDEVICEINSTANCE,但收到一条消息,提示它与之前的定义冲突。

该错误消息意味着什么?

最佳答案

这不是回调的工作方式。

EnumDevicsCallback 不是一个存在的函数。您应该编写您自己的函数,EnumDevices 将为每个设备调用该函数。您的函数不必称为 EnumDevicesCallback - 这是一个示例。

例如,如果您只想打印每个设备的名称,您可以这样写

BOOL CALLBACK PrintDevicesCallback(const DIDEVICEINSTANCE* DeviceInfo,   VOID* Context)
{
_tprintf("%s %s\n", DeviceInfo->tszProductName, DeviceInfo->tszProductName);
return DIENUM_CONTINUE;
}

然后将PrintDevicesCallback传递给EnumDevices

关于c++ - DirectInput 未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35071336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com