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 的第二个参数中删除引用
作为参考,我正在使用 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 的第二个参数中删除引用