gpt4 book ai didi

c++ - 在 XCode 中构建时出现 FreeType 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:04 28 4
gpt4 key购买 nike

首先是一些背景故事:

我不知道我在做什么。

那是个谎言,我知道我在做什么。我是一名 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,我什至不确定该版本号指的是什么。我似乎也无法在其他任何地方找到此错误,有什么想法吗?

最佳答案

错误消息中提到的版本号指的是库的兼容版本。这是在构建给定动态库时嵌入到给定动态库中的版本号。当另一个二进制文件链接到该库时,兼容性版本被复制到 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 框架可能是您的解决方案。

关于c++ - 在 XCode 中构建时出现 FreeType 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651769/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com