我需要SDL的main()函数吗?

时间:2016-11-16 00:40:58

标签: c sdl-2

我正在考虑使用自己的私人语言SDL2。他们可以与SDL2.dll等动态库进行通信,因此可行。但首先我需要使用C来尝试。

但是,一个hello-world风格的教程是难以捉摸的(他们是错误的SDL版本,或者他们是用C ++或其他什么)。最后,我把最小程序放在一起(只有#include" sdl.h"而main(){}将显示问题),我无法链接,因为我没有main()或WinMain()。

我知道SDL.h或其他标题重新定义了我的主要'因为它想要使用自己的main()例程。这可能存在于一些静态链接的SDL库中,因为它不能存在于SDL2.dll中。我不会拥有该库,因为我无法用自己的语言使用它,所以无法获得它的任何一点(也可以是特定于实现的,甚至可以作为源代码使用它,在这种情况下忘了!)。

我设法通过添加' #undef main'来获得基本的测试计划。

然而,我的问题是,SDL的主要()中是否有任何必要的东西,或者我将来可能会咬我?或者没有它可以逃脱? (为什么SDL只依赖于某些SDL_init()例程让我从main()调用?)

(我在SDL论坛上注册询问此事,但显然他们不允许我发帖,因为我没有合适的权限。那么注册的重点是什么?!)< / p>

1 个答案:

答案 0 :(得分:0)

在包含#undef main(或通过编译器标志定义)之前,您应该#define SDL_MAIN_HANDLED而不是SDL.h

如果您实现自定义主要功能,您至少应该致电SDL_SetMainReady。对于某些平台,SDL执行其他操作,例如设置特定的异常处理程序,将参数转换为UTF8,或完全不同的东西(例如,对于android,它实际上不是主要的,而是JNI函数)。

SDL在SDL2main图书馆中定义的入口点,并不是真正理解你做了什么而没有做到这一点&#39; (除了手动删除它)。您可以随时从libsdl.org下载存档或自行构建。