を使用してフレームワークから名前付きのエクスポートされていないシンボルをロードすることは可能dlsym
ですか?
インポートしようとしているシンボルには、フレームワーク内で参照される名前があります。それは私が呼び出す必要がある関数です。
dlopen
+通常のdlsym
方法で実行しようとしていますが、エクスポートされていないシンボルをロードしようとするとdlsym
、NULLポインターが返されます。
を使用してフレームワークから名前付きのエクスポートされていないシンボルをロードすることは可能dlsym
ですか?
インポートしようとしているシンボルには、フレームワーク内で参照される名前があります。それは私が呼び出す必要がある関数です。
dlopen
+通常のdlsym
方法で実行しようとしていますが、エクスポートされていないシンボルをロードしようとするとdlsym
、NULLポインターが返されます。
dlsym
シンボル テーブルにリストされている関数のみを読み込むことができます。問題のフレームワークで実行することにより、シンボル テーブルを一覧表示できますnm
。
これは dyld ソースで確認できます。これは dlsym
ImageLoaderMachOClassic::findExportedSymbol
の内部実装であり、単純にシンボル テーブルをバイナリ検索します。
そしてImageLoaderMachO::parseLoadCmds
、Mach ヘッダーのロード コマンドからシンボル テーブルをロードします。