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

时间:2015-01-17 23:49:24

标签: c++ sdl

作为参考,我正在使用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,但我不知道为什么,因为我认为结构是通过包含它存在的头文件来公开的。这不是这种情况吗?有什么建议?谢谢!

1 个答案:

答案 0 :(得分:2)

从ConvertSDLKeyToRawButton

的第二个参数中删除引用