我试图在macOS Monterey 12.3.1
上使用Xcode Version 13.3.1
来学习SDL2
执行以下步骤:
-
下载/运行
dmg
文件并将解压后的SDL2.framework
顶层文件夹移动到/Library/Frameworks
-
在Xcode内部,制作
Command line
项目,指定c++为语言。 -
在Xcode的通用选项卡中,我在
Frameworks and Libraries
下添加了SDL2.framework
,并选择了Embed
作为Do Not Embed
-
在Xcode的构建设置中,在
Search Paths / Framework Search Paths
下-我添加了适当的${inherited}
和${PROJECT_DIR}
(都设置为non-recursive
)。
现在,当我尝试build
项目时(即使我复制了一些介绍性代码,也就是说,通过在线教程呈现小窗口),我得到以下错误:
dyld`__abort_with_payload:
0x10005a0d4 <+0>: movl $0x2000209, %eax ; imm = 0x2000209
0x10005a0d9 <+5>: movq %rcx, %r10
0x10005a0dc <+8>: syscall
-> 0x10005a0de <+10>: jae 0x10005a0e8 ; <+20>
0x10005a0e0 <+12>: movq %rax, %rdi
0x10005a0e3 <+15>: jmp 0x100017150 ; cerror_nocancel
0x10005a0e8 <+20>: retq
0x10005a0e9 <+21>: nop
0x10005a0ea <+22>: nop
0x10005a0eb <+23>: nop
dyld[22494]: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2
Referenced from: /Users/pnwlover/Library/Developer/Xcode/DerivedData/hello_sdl-buacbgrhmffapiexkmaxsewyxqvl/Build/Products/Debug/hello_sdl
Reason: tried: '/Users/pnwlover/Library/Developer/Xcode/DerivedData/hello_sdl-buacbgrhmffapiexkmaxsewyxqvl/Build/Products/Debug/SDL2.framework/Versions/A/SDL2' (no such file), '/Library/Frameworks/SDL2.framework/Versions/A/SDL2' (code signature in <AEE63968-5A4B-3298-93A8-8AB781F92E22> '/Library/Frameworks/SDL2.framework/Versions/A/SDL2' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/System/Library/Frameworks/SDL2.framework/Versions/A/SDL2' (no such file)
(lldb)
我可能做错了什么?
对我来说,它通过确保我嵌入并签署SDL框架而起作用。
确保
SDL2.framework
正确导入到项目中。从您提供的日志信息来看,
@rpath/SDL2.framework/Versions/A/SDL2
运行时路径可能不正确。在Xcode的Build Settings中,找到
Runpath Search Paths
选项,添加SDL2
的真实路径,或者使用install_name_tool
修改/添加SDL2.framework
的路径。