4

最初のいくつかの裏話:

私は私が何をしているのかわかりません。

それはうそです、私は自分がしていることについて少し知っています。私はWeb開発者なので、コードを見るのは面倒なことではありませんが、Xcodeを使おうとするのは私にとって新しい本です。とにかく、私はWindowsでSFMLを使用してC ++でコンパイルされたゲームを設計しましたが、今はそれをOS Xに持ち込もうとしています(私はMacを持っているグループの中で唯一です)。

Xcode4.6.1とSFML2.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

1 に答える 1

4

エラーメッセージに記載されているバージョン番号は、ライブラリの互換性バージョンを示しています。これは、ビルド時に特定のダイナミックライブラリに組み込まれているバージョン番号です。別のバイナリがそのライブラリに対してリンクされている場合、互換性バージョンがLC_LOAD_DYLIBloadコマンドにコピーされdyld、実行時にどのダイナミックライブラリをロードする必要があるかが通知されます。ライブラリがによってロードされるdyldと、互換性バージョンがチェックされ、プログラムのバージョンがライブラリのバージョンよりも大きい場合はエラーになります。

実行otool -L freetype.framework/Versions/A/freetypeすると、互換性バージョンがとして報告されることがわかります16.0.0。で実行すると、 forsfml-graphics.framework/Versions/2.0.0/sfml-graphicsの互換性バージョンが報告されていることがわかります。したがって、上記のエラーケースに遭遇しています。17.0.0freetype.framework

このようなエラーの最も一般的な原因は、ビルドしたバージョンよりも古いバージョンのフレームワーク、およびリンクされたフレームワークに対してアプリケーションを実行することです。この意味での「古い」とは、互換性のあるバージョンを指し、フレームワークに関連付けられている他のバージョン番号(たとえば、マーケティングバージョン)を指すものではないことに注意してください。

関係する2つのフレームワークの起源を知らなければ(たとえば、自分でフレームを作成した場合、またはバイナリをどこから入手したか)、どこが間違っているのかは完全にはわかりません。ただし、SFML gitリポジトリには適切な互換性バージョン( )のバージョンがあるfreetype.frameworkように見えるので、SFMLの人々によって提供された17.0.0のバイナリを使用している場合は、FreeTypeフレームワークを選択することが解決策になる可能性があります。sfml-graphics.framework

于 2013-03-27T07:01:31.557 に答える