2

を使用してフレームワークから名前付きのエクスポートされていないシンボルをロードすることは可能dlsymですか?

インポートしようとしているシンボルには、フレームワーク内で参照される名前があります。それは私が呼び出す必要がある関数です。

dlopen+通常のdlsym方法で実行しようとしていますが、エクスポートされていないシンボルをロードしようとするとdlsymNULLポインターが返されます。

4

1 に答える 1

2

dlsymシンボル テーブルにリストされている関数のみを読み込むことができます。問題のフレームワークで実行することにより、シンボル テーブルを一覧表示できますnm

これは dyld ソースで確認できます。これは dlsym ImageLoaderMachOClassic::findExportedSymbolの内部実装であり、単純にシンボル テーブルをバイナリ検索します。

そしてImageLoaderMachO::parseLoadCmds、Mach ヘッダーのロード コマンドからシンボル テーブルをロードします。

于 2011-10-13T00:49:54.057 に答える