我正在尝试在
SDL2
上使用
Xcode Version 13.3.1
来学习
macOS Monterey 12.3.1
按照以下步骤操作:
下载/运行
dmg
文件并将提取的 SDL2.framework
顶级文件夹移动到 /Library/Frameworks
在 Xcode 中,制作了
Command line
项目,指定 C++ 作为语言。
在 Xcode 的常规选项卡中,我在
SDL2.framework
下添加了 Frameworks and Libraries
并选择 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 框架。
XCode 对于 SDL 完全没用,我建议你使用其他 IDE,如 Visual Studio Code
如果你要使用 VSCode,当你为你的项目创建一个目录时,添加一个
.vscode
文件夹,添加 c_cpp_properties.json
,然后在其中写入以下代码
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/Library/Frameworks"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}
干得好,你已经成功安装了
SDL2.framework
,当我看到'/Library/Frameworks/SDL2.framework/Versions/A/SDL2 ```时,就是成功的标志。
现在您应该检查如下步骤:
确保
SDL2.framework
'/Library/Frameworks/SDL2.framework/Versions/A/SDL2 ``` 已正确导入到项目中。
检查您提供的日志信息,
@rpath/SDL2.framework/Versions/A/SDL2
运行时路径可能不正确。
在Xcode的Build Settings中,找到
Runpath Search Paths
选项,添加SDL2
的真实路径,或使用install_name_tool
修改/添加SDL2.framework
的路径。