【发布时间】:2016-11-16 00:40:57
【问题描述】:
我正在考虑使用我自己的私有语言的 SDL2。他们可以与 SDL2.dll 等动态库进行通信,因此这可能是可行的。但首先我需要使用 C 进行尝试。
但是,一个 hello-world 风格的教程是难以捉摸的(它们适用于错误的 SDL 版本,或者它们使用 C++ 或其他语言)。不过最后我整理了一个最小程序(只需 #include "sdl.h" 和 main(){} 会显示问题),我无法链接,因为我没有 main() 或 WinMain()。
我了解 SDL.h 或其他一些头文件重新定义了我的“main”,因为它想使用自己的 main() 例程。这可能存在于 SDL 的一些静态链接库中,因为它不能位于 SDL2.dll 中。我没有那个库,也看不到任何获取它的意义,因为我无法用我自己的语言使用它(它也将是特定于实现的,甚至作为源代码提供,在这种情况下忘记它!)。
通过添加“#undef main”,我设法让一个基本的测试程序正常工作。
但是,我的问题是,SDL 的 main() 中是否有我需要的重要内容,或者将来可能会咬我?或者没有它我可以逃脱吗? (为什么 SDL 不只依赖一些 SDL_init() 例程让我从我的 main() 调用?)
(我注册了 SDL 论坛来询问这个问题,但显然他们不允许我发帖,因为我没有适当的权限。那么注册的意义何在?!)
【问题讨论】:
-
谢谢。这最终导致建议在源代码中查看“SDL_main.c”,这告诉我,除了与命令行解析有关的内容外,它还调用 SDL_SetMainReady()。那是如果它是正确的版本,但是SDL2.dll中有这样一个函数,所以如果我遇到问题,我可以尝试调用它。