Introspection dylib not loaded

10 views
Skip to first unread message

まるひ

unread,
Mar 9, 2009, 5:22:36 AM3/9/09
to cocoa-dev-japan
初めて投稿します。
樋坂(ひさか)と言います。
NEXTSTEPのころからのObjective-Cの日曜プログラマーです。

最近、G5とIntel Macを交互に使っていたら何か設定がおかしくなったようで、プログラム中からのファイルオープンで必ず
EXC_BAD_ACCESSを出して、以下のメッセージが出ます。なお、プログラムは一応ドキュメントエディタの体裁をとっています。

Xcode: Introspection dylib not loaded because thread 3 has function:
__dyld_dlopen on stack

なお、ドキュメントファイルをダブルクリックしてのファイル読み込みはエラーが出ません。

また、マウスの右クリックでは同様にEXC_BAD_ACCESSを起こし以下のメッセージとなります。

Xcode: Introspection dylib not loaded because thread 1 has function:
_class_lookupMethodAndLoadCache on stack

以上のエラーは、全く同じソースファイルを使って、G5、Intelのそれぞれでログインするアカウントで出たり出なかったりします。一旦出るとどうし
ても回復しません。

どこかのフレームワークの読み込みの設定ではと思い調べたのですが分かりませんでした。
どなたかアドバイスいただけると大変助かります。

まるひ

unread,
Mar 9, 2009, 10:45:32 AM3/9/09
to cocoa-dev-japan
自己レスです。
ICADevices.frameworkとAutomator.frameworkをExternal Frameworksに含めたら解決しまし
た。
FoundationとAppkitしか指定していませんでした。
お騒がせしました。
でも必要なFrameworkはどうやったら分かるのでしょう。
今回はしらみつぶしに調べることになっていまいました。

樋坂

donguri

unread,
Mar 9, 2009, 5:52:58 PM3/9/09
to cocoa-dev-japan
こんにちは、hipposです

> でも必要なFrameworkはどうやったら分かるのでしょう。

otool -L application

でライブラリの一覧が表示されます。

まるひ

unread,
Mar 9, 2009, 10:24:32 PM3/9/09
to cocoa-dev-japan
hipposさん

ありがとうございます。
otoolも良く知らなかったので大変勉強になります。
でも、これはできあがったアプリケーションが実行時に必要とするFrameworkの表示ですよね。今回はアプリケーションをリンクするときに設定すべ
きFrameworkの問題でした。すみませんが、その調べ方をご存知でしょうか。何か基本的なことを私が分かっていない気がします。本来、リンクエ
ラーが出るべきと思うのですが、実行時にしかエラーが検出されず、しかもそのエラーの再現性が実行環境によって変わるので困惑してしまいました。

樋坂

donguri

unread,
Mar 11, 2009, 3:56:14 PM3/11/09
to cocoa-dev-japan
まるひさん、こんにちは。hipposです。

> でも、これはできあがったアプリケーションが実行時に必要とするFrameworkの表示ですよね。今回はアプリケーションをリンクするときに設定すべ
> きFrameworkの問題でした。すみませんが、その調べ方をご存知でしょうか。何か基本的なことを私が分かっていない気がします。本来、リンクエ

これは失礼しました。

リンク時に必要なFrameworkは基本的には使おうとするAPIに記載されているのではないでしょうか?Apple純正ならばドキュメントの先頭に
記載されています。サードパーティのものを使用する場合で、もし情報がなかったり、Frameworkがさらに別のFrameworkに依存している場
合などは難しいですね。
何かいいツールがあるか探してみます。

ところで、今回のケースですが必要なFrameworkが指定されていない場合、そもそもリンクエラーになるのではないかと思うのですがどうでしょ
う?
"dylib not loaded ..." とFrameworkの指定とはまた別のように思います。また、外してたらすいません。

On 3月10日, 午前11:24, まるひ <his...@public.email.ne.jp> wrote:
> hipposさん
>
> ありがとうございます。
> otoolも良く知らなかったので大変勉強になります。

まるひ

unread,
Mar 12, 2009, 6:19:01 AM3/12/09
to cocoa-dev-japan
hipposさん、面倒な話におつきあいいただき有り難うございます。まるひです。

> "dylib not loaded ..." とFrameworkの指定とはまた別のように思います。また、外してたらすいません。

すみません、この説明をしていませんでした。確かに全く別問題でした。このメッセージの意味は以下のページを見つけて何となくわかりました。

http://lists.apple.com/archives/xcode-users/2007/Nov/msg01281.html

ここに書かれているように「実行」->「変数表示」->「データフォーマッタを有効にする」を無効にするとこのメッセージはでません。でもこれは
Xcodeがエラー検出後にスタックを確認してデータを保管しようとするのを中止するだけで、EXC_BAD_ACCESSのエラーの発生は本質的に変
わりません。

今回はご指摘のように、おそらくFrameworkが別のFrameworkに依存しているが、ビルド時にリンクエラーが出ないところに問題があるのだ
と思います。
あるいはその関係が使うCPUで微妙に違うのかもしれません。ある時点からはインテルで全く動作しなくなりました。
コンテンツメニューとロードパネルが使えなくなったのですが、これがICADevices.frameworkと
Automator.frameworkに依存するなんて、普通は分からないですよね。

Reply all
Reply to author
Forward
0 new messages