【问题标题】:FreeType error when building in XCode在 XCode 中构建时出现 FreeType 错误
【发布时间】:2013-03-17 02:47:10
【问题描述】:

首先是一些背景故事:

我不知道我在做什么。

这是一个谎言,我知道我在做什么。我是一名 Web 开发人员,所以查看代码并不全是胡言乱语,但尝试使用 Xcode 对我来说是一本新书。无论如何,我设计了一个在 Windows 上使用 SFML 用 C++ 编译的游戏,现在我们正试图将它带到 OS X 上(我是这群人中唯一拥有 Mac 的人)。

使用 Xcode 4.6.1 和 SFML 2.0 我一直在尝试构建这个该死的应用程序,但到目前为止,它只是令人头疼。让这个东西工作的当前状态还不错,它最终构建没有错误,但构建停止并显示:

dyld: Library not loaded: @executable_path/../Frameworks/freetype.framework/
Versions/A/freetype

Referenced from: /Users/Eric/Library/Developer/Xcode/DerivedData/
Test-haconqzbewevbwgukppsacykkpml/Build/Products/Debug/Test.app/
Contents/Frameworks/sfml-graphics.framework/Versions/2.0.0/sfml-graphics

Reason: Incompatible library version: sfml-graphics requires version 17.0.0 or
later, but freetype provides version 16.0.0

我只是不明白这个错误。我有最新版本的 FreeType。考虑到 FreeType 是 2.4.11,我什至不确定该版本号指的是什么。我似乎在其他任何地方也找不到这个错误,有什么想法吗?

【问题讨论】:

    标签: c++ xcode macos sfml freetype


    【解决方案1】:

    错误信息中提到的版本号指的是库的兼容版本。这是一个版本号,它在构建时被嵌入到给定的动态库中。当另一个二进制文件链接到该库时,兼容性版本被复制到 LC_LOAD_DYLIB 加载命令中,该命令在运行时告诉 dyld 需要加载哪些动态库。当dyld加载一个库时,会检查兼容版本,如果程序的版本大于库的版本,则为错误。

    当您运行otool -L freetype.framework/Versions/A/freetype 时,您会看到它将其兼容性版本报告为16.0.0。如果你在sfml-graphics.framework/Versions/2.0.0/sfml-graphics 上运行它,你会看到它报告17.0.0 的兼容版本freetype.framework。所以你遇到了上面描述的错误情况。

    此类错误的最常见原因是针对旧版本的框架运行您的应用程序,而不是您构建它的版本以及任何链接的框架。请注意,这个意义上的“旧”指的是兼容性版本,而不是与框架相关的任何其他版本号(例如,营销版本)。

    如果不知道所涉及的两个框架的来源(例如,如果您自己构建它们,或者您从哪里获得二进制文件),那么您哪里出错并不完全清楚。但是我会注意到 SFML git 存储库似乎有 a version of freetype.framework 和适当的兼容版本 (17.0.0),所以如果你使用的是 SFML 人员提供的 sfml-graphics.framework 二进制文件,那么选择他们的 FreeType 框架可能成为您的解决方案。

    【讨论】:

    • 不知道对其他人来说是什么,但链接到 sfml 包括 freetype 而不是我的系统 freetype 是我的解决方案target_link_libraries(${EXECUTABLE_NAME} "${CMAKE_SOURCE_DIR}/deps/SFML/extlibs/libs-osx/Frameworks/freetype.framework/Versions/A/freetype")
    • 这个问题解决了吗?我现在在我的 macbook 上使用 SFML 时遇到了类似的问题。我在 windows/ubuntu 上使用这个库开发,没有错误。 @slf 你在哪里添加的?我正在从命令行编译
    • 刚看到这是几年前的:|
    猜你喜欢
    • 2015-10-13
    • 1970-01-01
    • 2015-08-24
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多