链接 SDL2 在 OSX 上发出无数链接错误

Linking SDL2 emits countless linking errors on OSX

我有这个超级简单的 SDL2 可执行文件:

#include <SDL.h>

int main(void)
{
    SDL_Texture* t;
    SDL_DestroyTexture(t);
}

我试着这样编译:

clang++ $(sdl2-config --cflags --libs) foo.cc 

这让我遇到了一大堆链接错误,这些错误都与 Objective-C 和 Apple Libraries 有关。我可以用 SDL_Surface* s; SDL_DestroySurface(s); 做同样的事情,它不会发出这些错误。

我发现我可以使用 $(sdl2-config --static-libs) 解决这个问题。但我很确定,我不需要使用它。毕竟 SDL2 库不应该已经链接到它们了吗?为什么它只出现在 SDL_Texture 中,而不出现在 SDL_Surface 中?我做错了什么?

编辑:我不知道为什么我得到了反对票。这里有一小部分链接错误示例:

Undefined symbols for architecture x86_64:
  "_AudioObjectAddPropertyListener", referenced from:
      _COREAUDIO_Init in libSDL2.a(SDL_coreaudio.o)
      _COREAUDIO_OpenDevice in libSDL2.a(SDL_coreaudio.o)
  "_AudioObjectGetPropertyData", referenced from:
      _COREAUDIO_OpenDevice in libSDL2.a(SDL_coreaudio.o)
      _device_unplugged in libSDL2.a(SDL_coreaudio.o)
      _build_device_list in libSDL2.a(SDL_coreaudio.o)
  "_AudioObjectGetPropertyDataSize", referenced from:
  (...)

看起来您未能 link 反对 CoreAudio 框架。

您需要将此添加到您的 linker 命令行:

-framework CoreAudio.framework