【发布时间】:2016-06-28 21:54:47
【问题描述】:
我有这个超级简单的 SDL2 可执行文件:
#include <SDL.h>
int main(void)
{
SDL_Texture* t;
SDL_DestroyTexture(t);
}
我尝试这样编译:
clang++ $(sdl2-config --cflags --libs) foo.cc
这给了我一连串的链接错误,这些都与 Objective-C 和 Apple 库有关。我可以用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:
(...)
【问题讨论】: