문자열의 배열을 전달하는 것은 난 ctypes
통해 C 함수에 전달하고 싶은 :파이썬하는 ctypes : I 파이썬 2.7, 문자열의 배열을
unsigned int SetParams(unsigned int count, const char **params)
그래서 I 파이썬 파라미터를 정의 할 수있다 :
import ctypes as ct
lib = ct.cdll.LoadLibrary('...')
lib.SetParams.restype = ct.c_uint
lib.SetParams.argtypes = [ct.c_uint, ct.POINTER(ct.c_char_p)]
하지만 지금 내가 어떻게 실제로 그것을 부릅니까, 위의 라이브러리 호출에 사용하고자하는 파이썬 함수에서 PARAMS 세트를 제공하고 때? ctypes
와
def setParameters(strParamList):
numParams = len(strParamList)
strArrayType = ct.c_char_p * numParams
strArray = strArrayType()
for i, param in enumerate(strParamList):
strArray[i] = param
lib.SetParams(numParams, strArray)
난 그냥 시작하고이 할 수있는보다 자동화 된 방법이 있는지 궁금 : 나는 이런 식으로 뭔가를 생각하고? 또한 할당 strArray[i] = param
실제로 재 할당입니까? 그렇다면 이것은 꽤 비싸 보입니다. 파이썬 할당 된 버퍼에 문자열 포인터를 가리키는 것만 할 수도 있고 NULL로 끝나지 않은 방법일까요?
업데이트 나는 몇 가지 관련 질문을 살펴 보았지만 똑같은 문제를 다루는 직접적인 것을 찾지 못했습니다. 대단히 감사합니다.
'보다 자동화 된'경우 Cython을 살펴볼 수 있습니다. – pvg