2012-05-01 7 views
3

私は、librt.soで定義されたclock_gettimeを呼び出すサードパーティの.so、P4API.soを使用しようとしています。私のスクリプトのユーザは、LD_PRELOADを設定しないようにしたいと考えています。だから、のinitの.pyファイルで、私が持っている:Pythonでlibrt関数を使用するには?

import ctypes 

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

これは、ライブラリ罰金をロードしますが、スクリプトを実行すると、まだ放出:

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

私が試した:

__builtins__['clock_gettime'] = librt.clock_gettime 

でも動作しません。

ロードされたlibrtを認識するためにP4API.soを取得するにはどうすればよいですか?

+0

なぜP4API.soは 'librt.so'とリンクしていないのですか? – Electro

答えて

5

あなたは他のライブラリが利用できるようにするために

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

でそれをロードする必要があります。

関連する問題