4

librt.so で定義された clock_gettime を呼び出すサードパーティの .so、P4API.so を使用しようとしていますが、スクリプトのユーザーが LD_PRELOAD を設定する必要がないようにしたいと考えています。したがって、init .py ファイルには次のものがあります。

import ctypes

librt = ctypes.cdll.LoadLibrary('librt.so')

これによりライブラリが正常にロードされますが、スクリプトを実行すると次のように出力されます。

ImportError: /path/to/P4API.so: undefined symbol: clock_gettime

私はもう試した:

__builtins__['clock_gettime'] = librt.clock_gettime

しかし、それもうまくいきません。

P4API.so に読み込まれた librt を認識させるにはどうすればよいですか?

4

1 に答える 1

6

あなたはそれをロードする必要があります

 ctypes.CDLL('librt.so', mode=ctypes.RTLD_GLOBAL)

他のライブラリで利用できるようにするためです。

于 2012-05-01T17:05:06.060 に答える