Ошибка FreeType при сборке в XCode

Сначала немного истории:

Я не знаю, что я делаю.

Это ложь, я немного знаю о том, что я делаю. Я веб-разработчик, поэтому смотреть на код — это не все бред, но попытка использовать Xcode — это новая книга для меня. В любом случае, я разработал игру, которая была скомпилирована в C ++ с использованием SFML для Windows, и теперь мы пытаемся перенести ее на 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. Я не могу найти эту ошибку где-нибудь еще, какие-нибудь идеи?

4

Решение

Номера версий, указанные в сообщении об ошибке, относятся к версия совместимости библиотеки. Это номер версии, который заполняется для данной динамической библиотеки во время ее создания. Когда другой двоичный файл связан с этой библиотекой, версия совместимости копируется в 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 имеет версия freetype.framework с соответствующей версией совместимости (17.0.0), так что если вы используете двоичный файл sfml-graphics.framework предоставленный людьми SFML, тогда выбор их платформы FreeType может быть вашим решением.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]