Xcode,SFML 错误 dyld:未加载库

Xcode, SFML error dyld: Library not loaded

我正在尝试使用 link 到 SFML 库来启动一个基本的 C++ 项目。 我已将 SFML 库解压缩到文件夹 /Users/mulperi/cpplib/sfml 我已将其添加到 Include Search PathLibrary Search Path

我的代码很简单,我遵循了 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;
}

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

线程 1:

dyld`__abort_with_payload:
    0x10003b1e0 <+0>:  movl   [=12=]x2000209, %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 教程中那样拆分 include、libs、frameworks、extlibs tu /usr/local,但我总是得到相同的输出。

这是我的设置图片

好的,我再次仔细阅读了入门教程后就可以使用了。在 Mac,他们推荐使用框架文件,所以我所做的是:

  1. 将SFML/Frameworks和SFML/extlibs的内容复制到/Library/Frameworks
  2. Xcode project Build phases -> Link Binary with Libraries -> 添加 /Library/Frameworks 文件夹中的每个 SFML 框架(无需添加 extlib 框架)

注意:使用此方法无需添加包含搜索路径或库搜索路径。

在 Catalina 上,由于以下错误,已接受的解决方案似乎不再有效:

sfml-audio.framework cannot be opened because the developer cannot be verified

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

  • brew install sfml。然后在 Xcode link 上由 homebre 安装的库:
  • 导航到 Xcode 上的 'Link Binaries With Libraries' 部分,从 /usr/local/Cellar/sfml/x.x.x/lib 目录拖放 sfml 库

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

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

为了在 Xcode 中使用 SFML,试试这个:

--> 1.安装 sfml 依赖项:$ brew install sfml

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

在"Header Search Paths"中添加“/usr/local/Cellar/sfml/2.5.1/include”

在"Library Search aths"中添加“/usr/local/Cellar/sfml/2.5.1/lib

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

--> 3.转到 "Build Phases / Link Binary with Libraries" 部分并添加所有 "dylib" 文件:

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

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

验证是否所有包含都已正确添加到文件程序顶部,并且命名空间已正确放置,如:

#include <SFML/Graphics.hpp>

#include <iostream>

using namespace sf;