私は次のCコードを持っています(明確にするために、それは完全なコードではなく、イベントやそのようなものを処理する必要があることを知っています):
#!/usr/bin/tcc -run -L/usr/lib/x86_64-linux-gnu -D_REENTRANT -DSDL_MAIN_HANDLED -I/usr/include/SDL2 -lSDL2 -lGL -lGLEW
#include <GL/glew.h>
#include <SDL.h>
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_Window *win = SDL_CreateWindow("Hello World!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
SDL_GLContext glContext = SDL_GL_CreateContext(win);
while (1)
{
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
SDL_GL_SwapWindow(win);
}
SDL_GL_DeleteContext(glContext);
SDL_DestroyWindow(win);
return 0;
}
これを GCC (シバン行なし) でコンパイルし、実行可能ファイルを開始すると、問題なく動作しますが、TCC のコンパイルおよび実行機能のシンプルさとその速度が気に入っています。
ただし、コンパイルされた実行可能ファイルは次のコンソール出力を提供し、その後永久にハングアップし、CTRL-C で強制終了することさえできません。
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
ここで提案されているように SDL_MAIN_HANDLED を追加しましたが、何も変わりませんでした。
誰?