2015-01-03 2 views
3

파이썬의 내장 ctypes 모듈을 사용하는 방법을 알고 싶습니다. 나는 파이의 배수를 반환하는 간단한 C/C++ 코드를 썼다 : 내가는 MinGW로 컴파일ctypes를 사용하여 파이썬에서 호출 된 C 라이브러리에서 파이를 가져올 수 없습니다.

#define pi 3.14159265358979323846 //I tried this one too, not works. 
double ppi(int n){ 
return n*3.14159265358979323846; //The same number multiplied by n 
} 

이 코드와 함께 제공을 :: 블록 명령

gcc -shared -Wl,-soname,mylib.so -o mylib.so -fPIC mylib.c 

를 사용하여 나는 .so 파일 귀여운 있어요 & 나는 파이썬 코드에서 사용하려고 :

from ctypes import CDLL 
myModule=CDLL('mylib.so') 
print(myModule.ppi(1)) 
print(myModule.ppi(2)) 

그러나 반환

2226964 
2226964 

왜 그런가? 미리 감사드립니다. Return Types 문서에서

답변

2

:

기본 기능으로는 C int 형식을 반환 가정한다. 다른 리턴 유형은 함수 오브젝트의 restype 속성을 설정하여 지정할 수 있습니다.

그래서 당신은 수행해야합니다

myModule.ppi.restype = c_double 
print(myModule.ppi(1)) 
print(myModule.ppi(2)) 
+0

당신에게 너무 모자의 일종 감사합니다! 이 오류가 수정되었으므로 코드에서 사용할 수 있습니다. – Sasszem

+0

문제가 해결되면 대답을 받아 들여야합니다. – Barmar

관련 문제