我有这个超级简单的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:
(...)
答案 0 :(得分:1)
看起来您未能链接到CoreAudio
框架。
您需要将此添加到链接器命令行:
-framework CoreAudio.framework