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

时间:2018-03-24 11:58:20

标签: c++ xcode frameworks executable sdl-2

我试图从我的SDL2-Project创建一个可执行文件,它将在我发送给它的任何Mac上运行。

我的程序是用C ++编写的,Xcode9.2

显然,Xcode的方式是Project-> Archive。只要我在我的mac上执行产品,这就完美无缺。在/ Library / Frameworks /下没有安装SDL2.framework的mac上,它会在执行时抛出以下错误:

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上,将框架放在与可执行文件相同的文件夹中不会发生任何变化。

从我的研究中我知道,在BuildSettings中的Xcode中,>"框架搜索路径"可以选择告诉编译器在哪里查找框架。

在这个论坛上有人回答了类似的问题,将./作为搜索路径并将其设置为递归,让编译器在可执行文件所在的同一文件夹中查找框架。

这让我更接近解决方案。在构建过程中,Xcode现在在debug文件夹中查找框架并创建可执行文件而没有错误,而/ Library / Frameworks /中没有SDL框架。

编辑:这不适用于Project-> Archive。即使我将框架放入release文件夹中。 (/用户/添/库/开发商/ Xcode中/ DerivedData / Chat_Program-gapnuzuivnylrgbubtywdbzshous /建造/产品/释放)

当我尝试运行可执行文件时,会出现同样的错误,说明无法加载库。
可执行程序确实运行,如果我将框架放回/ Library / Frameworks /,这告诉我必须有一个选项告诉Xcode可执行文件必须在哪里搜索框架,这不是BuildSettings->&#34 ;框架搜索路径"该项目。

那么如何告诉我的可执行文件在其自己的文件夹中查找框架?

1 个答案:

答案 0 :(得分:0)

所以这就是我解决问题的方法:

  1. 转到BuildSettings-> All-> Linking-> Runpath搜索路径
  2. 更改为“@loader_path /”
  3. 显然,这会将上面错误消息中的@rpath更改为可执行文件所在的路径,因此框架现在可以放入与可执行文件相同的文件夹中。

    实际上非常简单,也许我是一个白痴,我不得不研究一整天来找到这个。也许它只是非常隐蔽,即使在互联网上也尽可能保密......

    无论如何 - 它现在很开心:)