我可以在计算机上很好地运行 c,但是当我包含 SDL 头文件时,该函数不会使用任何 stdio 输出方法进行打印。
例如,此代码编译并不会引发任何错误,但不会打印。
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
printf("hello world");
return 0;
}
生成文件:
CC = gcc
OBJS = game.c
INCLUDE_FLAGS = -I C:/dev_lib/include
LIBRARY_FLAGS = -L C:/dev_lib/lib/SDL2
LINKER_FLAGS = -lmingw32 -lSDL2main -lSDL2
NAME = game
all:
$(CC) $(OBJS) $(INCLUDE_FLAGS) $(LIBRARY_FLAGS) $(LINKER_FLAGS) -o $(NAME)
我在网上查了一下,发现SDL用具体的论据重新定义了主要功能,据我所知,我的与他们的相符。我尝试过简单地打开一个窗口,而不去打印任何东西,但这也没有奏效。
有任何已知的修复方法吗?这是一个常见问题吗?
您的最小示例似乎可以在 Debian 12 Linux 上运行
$ cat sdl2_test.c
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
printf("hello world");
return 0;
}
$ gcc -O3 -o myprogram sdl2_test.c `sdl2-config --cflags --libs`
$ ./myprogram
hello world
也许您的程序没有将输出刷新到终端。尝试添加换行符,如下所示
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
printf("hello world\n");
return 0;
}
或者
\r\n
(如果您使用的是 Windows)
$ sdl2-config --cflags --libs
-I/usr/include/SDL2 -D_REENTRANT
-lSDL2
$ sdl2-config --version
2.26.5