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

时间:2016-03-14 00:33:51

标签: c macos linker sdl sdl-2

我有这个超级简单的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中?我做错了什么?

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

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:
  (...)

1 个答案:

答案 0 :(得分:1)

看起来您未能链接到CoreAudio框架。

您需要将此添加到链接器命令行:

-framework CoreAudio.framework