Xcode,SFML错误dyld:库未加载

时间:2018-05-28 19:05:00

标签: c++ xcode macos sfml dyld

我正在尝试启动一个带有SFML库链接的基本C ++项目。 我已将SFML库解压缩到文件夹/ Users / mulperi / cpplib / sfml 我已将其添加到包含搜索路径库搜索路径

我的代码很简单,我按照Youtube上的教程(也尝试了不同的现成代码):

#include <iostream>
#include <SFML/Graphics.hpp>
int main() {
    sf::RenderWindow window(sf::VideoMode(640, 480), "First SML Window");
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            switch (event.type) {
                case sf::Event::Closed:
                    window.close();
                    break;
                default:
                    break;
            }
        }
        window.clear();
        window.display();
    }
    return 0;
}

构建成功所以路径应该没问题。我没有得到窗口,而是我有这些输出:

主题1:

dyld`__abort_with_payload:
    0x10003b1e0 <+0>:  movl   $0x2000209, %eax          ; imm = 0x2000209 
    0x10003b1e5 <+5>:  movq   %rcx, %r10
    0x10003b1e8 <+8>:  syscall 
->  0x10003b1ea <+10>: jae    0x10003b1f4               ; <+20>
    0x10003b1ec <+12>: movq   %rax, %rdi
    0x10003b1ef <+15>: jmp    0x10003aa48               ; cerror_nocancel
    0x10003b1f4 <+20>: retq   
    0x10003b1f5 <+21>: nop    
    0x10003b1f6 <+22>: nop    
    0x10003b1f7 <+23>: nop    

输出:

dyld: Library not loaded: @rpath/libsfml-system.2.5.dylib
  Referenced from: /Users/mulperi/Library/Developer/Xcode/DerivedData/sfml_1-cgodahbmxiufqnhhglbsyfuzvdvz/Build/Products/Debug/sfml_1
  Reason: image not found
(lldb) 

我在High Sierra 10.13.4上使用Xcode 9.3.1

更新 我也尝试在项目文件夹中移动SFML文件夹,甚至尝试在SFML教程中拆分包含,库,框架,extlibs tu / usr / local,但我总是得到相同的输出。

以下是我的设置图片 Folder structure

Header search path

Library search path

Added frameworks too

The output

3 个答案:

答案 0 :(得分:2)

好的,我仔细阅读了入门教程后再开始工作了。在Mac上,他们建议使用Framework文件,所以我做的是:

  1. 将SFML / Frameworks和SFML / extlib的内容复制到/ Library / Frameworks
  2. Xcode项目构建阶段 - &gt;链接二进制文件与库 - &gt;从/ Library / Frameworks文件夹添加每个SFML框架(无需添加extlib框架)
  3. 注意:无需使用此方法添加包含搜索路径或库搜索路径。

答案 1 :(得分:1)

在Catalina上,由于类似以下错误,似乎无法再接受该解决方案了:

sfml-audio.framework无法打开,因为开发人员无法通过验证

使用自制软件为我解决了该问题:

  • await Auth.signIn(email, password);。然后在Xcode上链接homebre通过以下方式安装的库:
  • 导航到Xcode上的“使用库链接二进制文件”部分,将sfml库从brew install sfml目录中拖放

  • 单击生成并运行。项目现在应该可以成功构建并运行

答案 2 :(得分:0)

我尝试了 MacOS Catalina 10.15.4(在2020年)中的后续步骤:

要在Xcode中使用SFML,请尝试以下操作:

-> 1。使用以下命令安装sfml依赖项:$ brew install sfml

-> 2。转到Xcode项目并添加以下内容:(非常重要)

在“标题搜索路径”中添加“ /usr/local/Cellar/sfml/2.5.1/include”

在“图书馆搜索资源”中添加“ /usr/local/Cellar/sfml/2.5.1/lib

2.5.1是sfml 版本,请尝试使用当前版本。

-> 3。转到“构建阶段/使用库链接二进制文件”部分,并添加所有“ dylib”文件:

  • '''-network。'''。dylib。
  • '''-window。'''。dylib。
  • '''-audio。'''。dylib。
  • ''-system。'''。dylib。
  • '''-graphics。'''。dylib。

-> 4。最后,运行您的项目。

验证所有包含项均已正确添加到文件程序的顶部,并且正确放置了名称空间,如下所示:

#include <SFML/Graphics.hpp>

#include <iostream>

using namespace sf;