为什么SDL2提供的事件值不正确? 我使用SDL2 V2.0.9,64,用VS2019 C++。SDL_PollEvent返回其类型字段包含不正确值的事件。返回的值是一致的,但始终是错误的

为什么SDL2提供的事件值不正确? 我使用SDL2 V2.0.9,64,用VS2019 C++。SDL_PollEvent返回其类型字段包含不正确值的事件。返回的值是一致的,但始终是错误的,c++,sdl-2,visual-studio-2019,C++,Sdl 2,Visual Studio 2019,我运行的代码可以正确使用旧版本的库和VC编译器。我尝试过使用VC2015进行构建,结果也一样。我还尝试过使用VCPKG版本并从头编译SDL2。结果总是一样的 以下是我的代码(带有一些调试输出语句): auto-loop=true; SDL_事件; 长事件计数器=0; while(循环){ while(SDL_事件和事件)){ std::wstringstreams; s谢谢你!你的回答让我明白了问题所在。我在vcpkg中同时安装了SDL1和SDL2,因此,即使我包含了正确的头文件,我的程序显然正

我运行的代码可以正确使用旧版本的库和VC编译器。我尝试过使用VC2015进行构建,结果也一样。我还尝试过使用VCPKG版本并从头编译SDL2。结果总是一样的

以下是我的代码(带有一些调试输出语句):

auto-loop=true;
SDL_事件;
长事件计数器=0;
while(循环){
while(SDL_事件和事件)){
std::wstringstreams;

s谢谢你!你的回答让我明白了问题所在。我在vcpkg中同时安装了SDL1和SDL2,因此,即使我包含了正确的头文件,我的程序显然正在链接SDL1库!我从vcpkg中删除了SDL1,问题就消失了


看起来它们应该可以在包管理器中共存,但我想不是。吸取的教训是,不要在vcpkg中同时安装SDL1和SDL2!

谢谢你!你的回答让我明白了这个问题。我在vcpkg中同时安装了SDL1和SDL2,因此,即使我包含了正确的头文件,我的程序仍然是y正在链接SDL1库!我从vcpkg中删除了SDL1,问题就解决了


看起来它们应该可以在包管理器中共存,但我想不是。吸取的教训是,不要在vcpkg中同时安装SDL1和SDL2!

请发布一个MCVE,以便人们可以轻松测试您的声明。
SDL\u KEYUP
值表明与以前的SDL-1.x内容有关,而不是SDL2(3至少为1.2.7中的值)。您可能使用错误的东西进行编译或链接,或者可能在更改版本后没有进行完整的重建;请注意,SDL1和SDL2不兼容,但它们的API中有明显的重叠,因此在hello world样式的程序中,很容易在不注意的情况下将它们混淆。请发布MCVE,以便人们可以轻松地测试你的声明!SDL\U键的
值表明与以前的SDL-1.x内容有关,而不是SDL2(3至少是1.2.7中的值)。您可能使用错误的东西进行编译或链接,或者可能在更改版本后没有进行完整的重建;请注意,SDL1和SDL2不兼容,但它们的API中有明显的重叠,因此在hello world样式的程序中,很容易在不注意的情况下将它们混淆。
auto loop = true;
SDL_Event event;
long eventCounter = 0;

while (loop) {

    while (SDL_PollEvent(&event)) {

        std::wstringstream s;
        s << "Event " << eventCounter++ << ", Type: 0x" << hex << event.type << std::endl;
        OutputDebugString(s.str().c_str());

        if (event.type == SDL_QUIT)
            loop = false;

        if (event.type == SDL_KEYDOWN) {
            switch (event.key.keysym.sym) {
                case SDLK_ESCAPE:
                    loop = false;
                    break;

                case SDLK_SPACE:
                    DoSomething();
                    break;

                default:
                    break;
        }
    }
}