PATH에 liba.so
을 포함해야합니다. 그렇지 않으면 파이썬은 어디에서 찾을 지 알 수 없습니다.
그렇지 않으면 부하 스크립트
from ctypes import *
from ctypes.util import find_library
import os
if find_library('a'):
liba = CDLL(find_library('a'))
else:
# library is not in your path, try loading it from the current directory
print 'liba not found in system path, trying to load it from the current directory'
print '%s/%s'%(os.path.dirname(__file__),'liba.so')
liba = CDLL(os.path.join(os.path.dirname(__file__),'liba.so'))
http://docs.python.org/library/ctypes.html#finding-shared-libraries
의 디렉토리에서로드하려고합니다, 그것은 PATH에서 찾을 수있는 경우가 라이브러리를로드 할 수 있습니다, 다음 코드를 사용해보십시오 업데이트 : 네이티브 타사 라이브러리 (libb
)에 액세스하기 위해 네이티브 라이브러리 (liba
)를 만든 이유가 궁금합니다. 제삼자 C 라이브러리를 ctypes
을 사용하여 파이썬으로 직접 가져 와서 libb
에 파이썬 (기본이 아닌) 래퍼를 만들 수 있습니다. 예를 당신이
>>> from ctypes import *
>>> lib_c = CDLL("libc.so.6")
>>> print lib_c.time(None)
1150640792
및 libb
>>> from ctypes import *
>>> lib_b = CDLL("libb")
>>> lib_b.hello_world(None)
확실 liba.so을 만들어 libb.so을 위해 할 것
time
표준 C lib 디렉토리와 통화 할 수 내 경로에 모두 있습니다. 여전히 같은 문제가 있습니다. libb.so (타사 라이브러리)를 찾을 수 없음 – marvelliba.so를 찾을 수는 있지만 liba.so와 연결된 libb.so에 대해 불평합니다. libb.so도 경로에 있음을 확인했습니다. – marvel
그래서'CDLL (find_library ('b'))'하면 어떻게됩니까? 또한'liba'를 약간 이상하게 임포트하고 있음을 알았습니다.'import liba' 또는'lib import'를하지 말아야합니다.'import liba *'가 아닙니다. 후자가 유효하지 않습니다. ' –