나는 DLL을 호출하는 Python 2.7 프로그램이있다. 스크립트를 파이썬 3.2로 이식하려고합니다. DLL 호출이 작동하는 것 같습니다 (즉, 호출시 오류가 없음).하지만 반환 된 데이터는 의미가 없습니다.파이썬 2와 3 사이 ctypes의 차이점
유용 할 수 있습니다. -이 호출에는 int (입력)와 ushort 배열 (출력)에 대한 포인터라는 두 개의 인수가 사용됩니다.
저는 파이썬과 numpy 배열을 모두 사용하지 않고 시도했습니다.
누구나 ctypes를 존중하는 Python 2.7과 3.2의 차이점을 열거 할 수 있습니까? 사전
편집 여기
에서
덕분에 몇 가지 예제 코드입니다. DLL에는 코드가 없으므로 프로피 멘터 리입니다.
void example (int width, int height, unsigned short* pointer)
파이썬 코드는 다음과 같습니다 :
width, height = 40, 100
imagearray = np.zeros((width,height), dtype=np.dtype(np.ushort))
image = np.ascontiguousarray(imagearray)
ptrimage = image.ctypes.data_as(ct.POINTER(ct.c_ushort))
DLL.example(width, height, ptrimage)
이 파이썬 2.7에서 작동하지만 3.2하지만 난 C 헤더가 않습니다. 하는 ctypes의 변화 만 세드릭 지적을하는 경우
편집 2
, 그것은 3.2이 작동하지 않습니다 파이썬 이해가되지 않습니다. 그래서 코드를 다시 살펴보면서, 내가 언급 한 함수 앞에 호출 된 준비 함수가 있음을 발견했습니다. 서명은 다음과 같습니다 문제가 파이썬 문자열 처리의 변화에 기인한다는 것이 가능
table = str(aNumber)
DLL.prepare(table)
: 파이썬에서
void prepare(char *table)
, 나는에 의해 호출 무엇입니까?
나는 전혀 차이 잘 모르는 것 같아요. 나는 우리가 약간의 코드를 볼 필요가 있다고 생각한다. –