如何将Win32合并到SDL项目中?

时间:2014-11-22 21:41:22

标签: c++ winapi opengl visual-studio-2012 sdl-2

我使用SDL和OpenGL制作了一些软件,现在我想为输入添加一个图形界面,比如一些文本框和按钮。我意识到这可能必须在一个单独的窗口中,我不介意,但我不知道如何在我的项目中合并Win32功能。我尝试从

更改主函数的定义
int main(int argc, char **argv)
{
    ...
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine, int cmdShow)
{
    ...
}

但我收到的错误是:

LNK2005: _WinMain@16 already defined in SDL2main.lib (SDL_windows_main.obj)
LNK2005: _WinMain@16 already defined in Source.obj
LNK2019: unresolved external symbol _SDL_main referenced in function _main

我正在使用Visual Studio 2012。 有没有办法解决这个问题,还是有另一种方法在c ++中创建表单?

由于

1 个答案:

答案 0 :(得分:2)

SDL将main定义为宏。这就像最终的恐怖表演。当然,将微软的WinMain怪物混合在一起似乎是合适的,但任何事情都不需要它。

而是保留main

如果我已经承诺使用SDL(考虑到上述情况,我永远不会这样做),那么我首先要查看SDL提供的文本框和按钮等方式。如果没有,则只需正确包含<windows.h>(首先定义STRICTNOMINMAX以及UNICODE),然后使用API​​。但为此,我建议首先通过创建一些纯API程序来学习API,而不会干扰SDL。