我在VS2019 C ++中使用64位SDL2 v2.0.9-3。 SDL_PollEvent返回其类型字段包含不正确值的事件。返回的值是一致的,但是总是错误的!
我正在运行的代码可以与旧版本的库和VC编译器正常工作。我试过用VC2015构建具有相同结果。我也尝试过使用VCPKG版本并从头开始编译SDL2。结果总是一样。
这是我的代码(带有一些调试输出语句):
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;
}
}
}
keydown返回0x10002(大于SDL_LASTEVENT的值-应该为0x300),keyup返回0x3(应该为0x301)。所有其他事件也是一致的,但是是错误的。有任何线索吗?
答案 0 :(得分:0)
谢谢你立方!您的答复使我明白了这个问题。我在vcpkg中同时安装了SDL1和SDL2,因此,即使我包括正确的头文件,我的程序也显然已链接了SDL1库!我从vcpkg中删除了SDL1,问题消失了。
似乎他们应该能够在软件包管理器中共存,但我想不是。经验教训,vcpkg中没有同时安装SDL1和SDL2!