2012-01-29 3 views
0

지난 3 일 동안 나는 TA-Lib이 파이썬과 함께 작동하는 것을 알아 내려고 노력했습니다.Ctypes의 TA-Lib, 전화 호출 기능

from ctypes import * 
import numpy 

c_float_p = POINTER(c_float) 
data = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]) 
data = data.astype(numpy.float32) 
data_p = data.ctypes.data_as(c_float_p) 


dylib = CDLL('libta_lib.dylib') 


value = dylib.TA_S_SMA(c_int(0), c_int(data.size - 1), data_p, 0, 19, data_p) 

인쇄 값 반환이에 상관없이 배열 값이 무엇인지이 내가 dylib (A .so를의 맥 버전)로 컴파일과 같은 코드 파이썬 스크립트에서 호출 된 것은 다음과 근원이다. 나는 TA_S_SMA의 네 번째 인수를 0 또는 1에서 바꿀 수 없다. 그렇지 않으면 파이썬 충돌로 이어지는 파이썬 138 오류가 발생한다. 누구든지이 함수를 호출하는 적절한 방법을 설명 할 수 있습니까? 내 C 기술은 제한되어 있습니다 (0을 읽음).

유용한 링크 :

감사합니다!

답변

0

나는 몇 주 전에 똑같은 문제가 있었는데 이것들을 발견했다. instructions. 이제 그들은 ctypes를 사용하지 않고 있지만 내 의견으로는 더 잘 작동합니다. SWIG가 당신을 위해 모든 포장을 할 것입니다. 조심해야 할 몇 가지. Single:Multi: 섹션에 도달했을 때, 켜기를 모르는 경우 멀티로 시작하고 작동하지 않으면 단일으로 이동하십시오. Python 2.3을 Python 2.6으로 대체하고 있습니다. 파이썬 2.7을 사용하고 2.6을 2.7로 바꿨고 작동했습니다. 이것이 파이썬의 상위 버전에서는 효과가 있을지 모르겠지만 사용하는 경우에는 그럴만 한 가치가 있습니다. 희망이 도움이됩니다.

+0

나는 이것을 시도하고 다시 연락 할 것이다. 감사. Im on 2.7 – NoviceCoding

0

이프로젝트를 살펴 봐야합니다.

Cython을 사용하여 TA-Lib을 랩핑하며 크로스 플랫폼이며 설치가 쉽고 SWIG 바인딩보다 빠릅니다.