dlopen + dlsym呼び出しを使用して実行時にライブラリをロードしたいとします。私は、dlsym()を使用してロードする必要のある関数の名前をリストアップし、単純な 'for'ループを使用してこれらの関数をロードします。 'dl'呼び出しを使用してロードする関数(多分 'gcc'属性を使用)をマークする方法はありますか?関数を動的にロードするための関数属性
ありがとう、 Ram。
dlopen + dlsym呼び出しを使用して実行時にライブラリをロードしたいとします。私は、dlsym()を使用してロードする必要のある関数の名前をリストアップし、単純な 'for'ループを使用してこれらの関数をロードします。 'dl'呼び出しを使用してロードする関数(多分 'gcc'属性を使用)をマークする方法はありますか?関数を動的にロードするための関数属性
ありがとう、 Ram。
UNIX系のシステムには、.soファイルに含まれるシンボルを返すnm
というコマンドがあります。使用方法はnm -g filename.so
です(詳細はhereです)。
このコマンドをexec
などと呼ぶことができます。
あなたが幹部を使用できない場合、あなたはsource code of the nm
コマンドの一部を取り、
しかし、nmは指定された.soのすべてのシンボルをリストします。私はいくつかの機能しか探していません。 – ram
'nm'を呼び出して、Cコードの出力から必要なシンボルを検索する必要があります。あるいは、コマンドを実行しているので、 'grep'コマンドを使って同じ' exec'コマンドで 'nm'の出力を解析することができます。 – Ararararagi
grep出力で必要な機能だけを見つける方法はありますか? – ram
最も簡単な方法は、関数の名前を記入する一つの関数を作る、または持っているだろう、あなたのプログラムでそれを使用する必要がありますそれらをあなたが 'dlsym'という変数として... –
もっと説明できますか? – ram