Xcode:可执行文件找不到SDL2.framework

pdtvr36n  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(136)

我正在尝试从我的SDL 2-Project创建一个可执行文件,它将在我发送到的任何Mac上运行。
我的程序是用C++编写的,Xcode9.2
显然,XCode中的方法是Project-〉Archive。只要我在Mac上执行产品,这就完全可以正常工作。在Mac上,如果没有在/Library/Frameworks/下安装SDL2.framework,它在执行时会抛出以下错误:

dyld: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2
Referenced from: /Users/thomas/Downloads/Chat_Program_Mac v1/Chat_Program 2
Reason: image not found

所以这个错误并不奇怪,因为我没有静态链接(无论如何也不知道这是如何工作的),显然程序需要框架才能运行。
在Windows上,您只需将.dll文件与.exe放在同一个文件夹中,即可正常工作。
现在在mac上,把框架和可执行文件放在同一个文件夹中不会改变任何东西。
从我的研究中我知道,在XCode中,在BuildSettings-〉“Framework Search Paths”下有一个选项,告诉编译器在哪里查找框架。
这个论坛上有人回答了类似的问题,把./作为搜索路径,并设置为递归,让编译器在同一个文件夹中查找框架,可执行文件在那里。
这让我离解决方案更近了一步。在构建过程中,XCode现在会查找debug文件夹中的框架,并毫无错误地创建可执行文件,而/Library/Frameworks/中没有SDL框架。
编辑:这对Project-〉Archive不起作用,即使我把框架放到了release文件夹中。(/Users/Tim/Library/Developer/Xcode/DerivedData/Chat_Program-gapnuzuivnylrgbubtywdbzshous/Build/Products/Release)
但是当我尝试运行可执行文件时,出现了相同的错误,说库无法加载。
不过,如果我将框架放回/Library/Frameworks/中,可执行文件确实会运行,这告诉我必须有一个选项来告诉XCode可执行文件必须在哪里搜索框架,而不是项目的BuildSettings-〉“Framework Search Paths”。
那么,我如何告诉我的可执行文件在它自己的文件夹中查找框架呢?

mwyxok5s

mwyxok5s1#

我是这样解决问题的:
1.后藤构建设置-〉全部-〉链接-〉跑道搜索路径
1.更改为“@loader_path/”
显然,这会将上面错误消息中的@rpath更改为可执行文件所在的路径,因此框架现在可以与可执行文件放在同一个文件夹中。
其实很简单,也许我是一个白痴,我不得不研究了一整天才找到这个。也许它只是隐藏得很好,即使在互联网上也尽可能保密...
管它呢-很高兴它现在起作用了:)

相关问题