2017-09-28 14 views
0

dlopen + dlsym呼び出しを使用して実行時にライブラリをロードしたいとします。私は、dlsym()を使用してロードする必要のある関数の名前をリストアップし、単純な 'for'ループを使用してこれらの関数をロードします。 'dl'呼び出しを使用してロードする関数(多分 'gcc'属性を使用)をマークする方法はありますか?関数を動的にロードするための関数属性

ありがとう、 Ram。

+0

最も簡単な方法は、関数の名前を記入する一つの関数を作る、または持っているだろう、あなたのプログラムでそれを使用する必要がありますそれらをあなたが 'dlsym'という変数として... –

+0

もっと説明できますか? – ram

答えて

0

UNIX系のシステムには、.soファイルに含まれるシンボルを返すnmというコマンドがあります。使用方法はnm -g filename.soです(詳細はhereです)。

このコマンドをexecなどと呼ぶことができます。

あなたが幹部を使用できない場合、あなたはsource code of the nmコマンドの一部を取り、

+0

しかし、nmは指定された.soのすべてのシンボルをリストします。私はいくつかの機能しか探していません。 – ram

+0

'nm'を呼び出して、Cコードの出力から必要なシンボルを検索する必要があります。あるいは、コマンドを実行しているので、 'grep'コマンドを使って同じ' exec'コマンドで 'nm'の出力を解析することができます。 – Ararararagi

+0

grep出力で必要な機能だけを見つける方法はありますか? – ram

関連する問題