SDL FAQ 中有一些关于此的信息,但我需要的是完全消除这些文件,而不是将输出重定向到控制台。我希望程序仅在有任何输出时才创建它们,尽管这不是必需的。这些文件只是一个麻烦,我只想摆脱它们。
任何帮助是极大的赞赏。
将两者的输出定向到 NUL。
main
您可以避免使用main
SDL 附带的,main
而是提供您自己的。根据此邮件,您将能够在 SDL 1.3 中通过定义一个在 includeSDL_MAIN_HANDLED
之前调用的宏来完成此操作SDL.h
。仅此更改的提交SDL_main.h
,因此您可以在本地 SDL 安装中修补该文件,而无需重新编译任何内容。但由于主要影响似乎是避免定义main
为预处理器宏,因此可能简单地这样做:
#include <SDL.h>
#undefine main
不过,未经测试。您可能不得不欺骗您的构建系统不使用提供main
相应的库。WinMain
对于 SDL。
看到SDL_main.h
上面的代码没有定义WinMain
为宏,您可能只需声明自己的WinMain
函数而无需执行任何预处理器技巧。同样,您可能需要也可能不需要省略一个库,所以试试这个。
请注意,在 SDL 1.3 中,您不必再担心这些文件:它还将包括此提交,其中包括
- 从 WinMain() 中提取 stdio 重定向
因此,如果您愿意从源代码编译 SDL,这为您提供了另一组选项:您可以从当前的 HG 树开始使用 SDL,尽管这样做可能会使您面临可能不稳定的实现。或者,您可以将该单个提交移植回 SDL 1.2,因为与未来版本的兼容性不会因此受到任何不良影响。