1

OSX 10.8 で MacRuby 0.12 プロジェクトをビルドしようとしています。問題は、次の行にあるようです。

 @context = NSGraphicsContext.currentContext.graphicsPort

このエラーをスローします:

unrecognized runtime type `{CGContext=}' (TypeError)

NSGraphicsContext.currentContext問題なく逆参照できcurrentContext.graphicsPortますが、実行時に失敗します。

ランダムに Google を調べてみると、MacRuby が CoreGraphics に適切にリンクしていないようです。ApplicationServices.framework を明示的に追加しようとしましたが、役に立ちませんでした。混乱に加えて、私の友人のほぼ同一のセットアップで新しくチェックアウトした正確なプロジェクトは問題なく動作するため、問題はプロジェクト設定ではなくシステムの構成にある可能性があります。

誰かがこれに遭遇したことがあり、アドバイスを提供できますか?

4

1 に答える 1

2

さて、IRC クライアントから多くの支援を受け@jballanc#macruby結果、これは最新の XCode での CoreGraphics のパッケージ方法の変更によって引き起こされた Mountain Lion 固有の問題であると判断しました。困ったときの対処法は以下の通りです。

  1. 次のようなものを使用して、CoreGraphics と ApplicationServices の両方の Bridge サポート ファイルを再生成します。

    gen_bridge_metadata --64-bit -f /System/Library/Frameworks/CoreGraphics.framework/ -o /System/Library/Frameworks/CoreGraphics.framework/Resources/BridgeSupport/CoreGraphics.bridgesupport

  2. Mountain Lion では、MacRuby コードから CoreGraphics フレームワークを明示的にロードする必要がありますが、Mountain Lion より前のバージョンではそうするとクラッシュします。したがって、次のチェックのようなものが必要になります。

    framework 'CoreGraphics' if (/12/ =~ `uname -r`) == 0

  3. 環境によっては、XCode プロジェクト設定で ApplicationServices.framework に対して明示的にリンクする必要がある場合とない場合があります。

上記のすべてを実行することで、私と Snow Leopard を使用している私のパートナーは同じコード ベースを共有し、両方で機能させることができました。

于 2013-01-15T00:34:35.293 に答える