我正在使用SDL在Mac OS X上构建游戏。然而,SDL.framework表现出特殊的行为。
如果/ Library / Frameworks以及应用程序包中存在SDL.framework,GDB会吐出以下内容:
objc [40787]:类SDLTranslatorResponder在/ Users / Hinchy / Library / Developer / Xcode / DerivedData / Here_Comes_Launchman-abjymmujvjzdemcsrkkcmonahuva / Build / Products / Debug / Here Comes Launchman.app/Contents/MacOS/../中实现框架/ SDL.framework / Versions / A / SDL和/Library/Frameworks/SDL.framework/Versions/A/SDL。将使用两者之一。哪一个未定义。 objc [40787]:类SDL_QuartzWindow在/ Users / Hinchy / Library / Developer / Xcode / DerivedData / Here_Comes_Launchman-abjymmujvjzdemcsrkkcmonahuva / Build / Products / Debug / Here Comes Launchman.app/Contents/MacOS/../Frameworks/SDL中实现.framework / Versions / A / SDL和/Library/Frameworks/SDL.framework/Versions/A/SDL。将使用两者之一。哪一个未定义。 objc [40787]:类SDL_QuartzWindowDelegate在/ Users / Hinchy / Library / Developer / Xcode / DerivedData / Here_Comes_Launchman-abjymmujvjzdemcsrkkcmonahuva / Build / Products / Debug / Here Comes Launchman.app/Contents/MacOS/../Frameworks/SDL中实现.framework / Versions / A / SDL和/Library/Frameworks/SDL.framework/Versions/A/SDL。将使用两者之一。哪一个未定义。 objc [40787]:类SDL_QuartzView在/ Users / Hinchy / Library / Developer / Xcode / DerivedData / Here_Comes_Launchman-abjymmujvjzdemcsrkkcmonahuva / Build / Products / Debug / Here Comes Launchman.app/Contents/MacOS/../Frameworks/SDL中实现.framework / Versions / A / SDL和/Library/Frameworks/SDL.framework/Versions/A/SDL。将使用两者之一。哪一个未定义。
然后游戏在第一个SDL_PollEvent处使用EXC_BAD_ACCESS符号继续崩溃。
如果SDL.framework仅存在于应用程序包中(或根本不存在),则游戏完全拒绝启动。
如果SDL.framework仅存在于/ Library / Frameworks中,则游戏运行时没有问题。
此仅适用于SDL.framework,而不适用于我在项目中使用的其他SDL衍生产品(SDL_image,SDL_mixer等)。
答案 0 :(得分:0)
看看这篇文章: Embedding frameworks in a Mac App Bundle
更改
Runpath搜索路径"将设置设置为" @loader_path /../ Frameworks"
建议从我的输出中删除该消息,并允许它在我的/ Library / Frameworks文件夹中没有SDL.framework的情况下运行。