LNK2019:未解析的外部符号,但定义了函数?

LNK2019: unresolved external symbol, but the function is defined?

作为参考,我正在使用 SDL 开发一个项目。我启用了多字节字符集,为链接器设置了 Windows 子系统,并且我相信所有 .lib 和 .dll 文件都正确指向了。在我的 main 顶部,我有 #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;
}

在主要部分,我包括 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,但我不确定为什么,因为我认为结构是通过包含它所在的头文件而暴露的。这是不是这样吗?有什么建议吗?谢谢!

从 ConvertSDLKeyToRawButton 的第二个参数中删除引用