ロードせずに.SO(共有オブジェクト)ファイルの内容を読み取る方法はありますか?
私の使用シナリオは次のとおりです。
注:DLLでこれらのことを簡単に行うことができます。また、私は.SOファイルをロードできないようにWindowsで作業しています。
ありがとう
画面へ:readelf -a <file>
出力を保存するには、ファイルにダンプします。たとえば、Raspberry PiのPython RPi.GPIOモジュールは、/ usr/lib/python2.7/dist-packages/RPiに格納されているので、次のように実行します。 readelf -a GPIO.so > ~/gpio.so.out
GNU binutilsに含まれているツールを使用してこれらのファイルを読み取ることができます。GNU binutilsは通常Linuxシステムにインストールされますが、これはWindowsには当てはまりません。ただし、 、WindowsのCygwinまたはminGW内で実行されます。
リソース:
MinGW(3.)では、Cygwin(2.)は必要なく、Binutils(1.)を自分でコンパイルする必要はありません。 BinutilsはMinGW(3.)に含まれていますが、MinGW(4.)のBinutils部分のみをダウンロードすることもできます。
nm
とreadelf
を使用して情報を取得する方法は、次のとおりです。 。soファイルにシンボルをリストする方法
この機能をC++プログラムに組み込みたい場合は、これらのツールのソースコードを組み込む(ライセンスに注意してください)か、プログラム内から呼び出すことができます。おそらく、Windowsでソースコードをコンパイルするには、Cygwin環境が必要です。
はい、Windows OS用のソリューションが必要でした。 Android sdk/ndkのndkツールにあるnm.exeツールを使用しました。
nm.exeの出力をいくつかのファイルにダンプし、正規表現を使用してそこからすべてのクラスとメソッドを抽出しました。