鸡方案中链接sdl2(对SDL函数的未定义引用)

Linking sdl2 (undefined reference to SDL functions) in chicken scheme

我正在尝试通过使用 sdl 编写一个简单的游戏来学习小鸡计划。我正在尝试创建一个外部函数来初始化 SDL:

(use foreigners lolevel)

(foreign-declare "#include <SDL2/SDL.h>")

(define (sdl-init)
  (foreign-lambda* int ((int val))
    "if (SDL_Init(SDL_INIT_VIDEO) < 0) {
    SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, \"Couldn't initialize SDL: %s\",
                 SDL_GetError());
    exit(1);
  }
  "))

我收到错误:

undefined reference to `SDL_Init'
undefined reference to `SDL_GetError'
undefined reference to `SDL_LogError'

所以它找不到 SDL。通常在 C 中你会做这样的事情(来自 sdl 页面):

gcc -o test test.c sdl-config --cflags --libs

有没有办法在编译 .scm 文件时添加这些标志。

我建议使用 sdl2 egg。如果你仍然喜欢建立你自己的 sdl2 绑定,你可以使用这样的东西:

csc test.scm -C "`sdl-config --cflags`" -L "`sdl-config --libs`"

我还注意到您仍在使用不再维护的 CHICKEN 4;您可能要考虑更新到 CHICKEN 5。