作为参考,我正在使用SDL开展项目。我启用了多字节字符集,为链接器设置了Windows子系统,我相信,所有.lib和.dll文件都指向正确。在我的主要内容中,我有#include "SDL.h"
所以我有一个包含原始输入枚举的结构:
RawInputConstants.h:
struct RawInput
{
enum RawInputButton
{
RAW_INPUT_KEY_W,
RAW_INPUT_KEY_A,
RAW_INPUT_KEY_S,
RAW_INPUT_KEY_D
};
}
我将此包含在我的帮助函数头中,并在.cpp中定义以下函数。
InputHelper.cpp:
bool ConvertSDLKeyToRawButton(SDL_Event &event, RawInput::RawInputButton &button)
{
switch (event.key.keysym.sym)
{
case SDLK_w: button = RawInput::RawInputButton::RAW_INPUT_KEY_W; break;
case SDLK_a: button = RawInput::RawInputButton::RAW_INPUT_KEY_A; break;
case SDLK_s: button = RawInput::RawInputButton::RAW_INPUT_KEY_S; break;
case SDLK_d: button = RawInput::RawInputButton::RAW_INPUT_KEY_D; break;
default: return false;
}
return true;
}
在main中,我包含InputHelper并尝试说:
RawInput::RawInputButton button;
if (ConvertSDLKeyToRawButton (event, button))
我收到了:
error LNK2019: unresolved external symbol "bool __cdecl ConvertSDLKeyToRawButton(union SDL_Event &,enum RawInput::RawInputButton)" (?ConvertSDLKeyToRawButton@@YA_NAATSDL_Event@@W4RawInputButton@RawInput@@@Z) referenced in function _SDL_main
似乎抱怨它不知道如何处理ConvertSDLKeyToRawButton,但我不知道为什么,因为我认为结构是通过包含它存在的头文件来公开的。这不是这种情况吗?有什么建议?谢谢!
答案 0 :(得分:2)
从ConvertSDLKeyToRawButton
的第二个参数中删除引用