뒤로 ctypes를 사용하여 상용 DAQ 라이브러리 주위에 얇은 래퍼를 작성했습니다. 그때 이후로 나는 Cython을 건너 왔고 보다 더 좋게/더 깨끗하게 만들 수 있다고 생각하고있다. 나는 전에 가지고 있었다. 대부분의 Cython 문서는 의미가 있습니다. 그리고 제가 알고있는 것은 대부분 입니다. 그러나 포장하고있는 라이브러리는 매우 높습니다. windows 특정 및 표준 C/C + + 코드와 약간 다른 것들을 수행합니다. 내가 알 수 있듯이.Cython을 사용하여 어려운 C 헤더 파일을위한 Python 래퍼 쓰기
다음은 헤더 파일의 몇 조각입니다. 정확히 포장하지 말고 입니다.
#ifndef DAQ_H
#define DAQ_H
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(_DAQAPI32_)
#define DAQAPI __declspec(dllimport)
#else
#define DAQAPI
#endif
내가 수집 무엇을, 나는 아마 내 사이 썬 정의이 대부분을 무시할 수에서 ? gcc를 사용하여 C 코드를 컴파일하려고 시도했지만 모든 함수 정의에서 오류가 발생합니다. ctypes를 사용하여 라이브러리에 직접 액세스했으며 헤더 파일을 전혀 사용하지 않았습니다.
이 대부분의 기능을 선언하고 운영하는 방법을 기본적으로
/* Handle Type Definition */
typedef INT DaqHandleT;
/* Initialization and Locking Prototypes */
DAQAPI DaqHandleT WINAPI daqOpen(LPSTR daqName);
DAQAPI DaqError WINAPI daqClose(DaqHandleT handle);
DAQAPI DaqError WINAPI daqOnline(DaqHandleT handle, PBOOL online);
/* Error Handler Type Definitions */
typedef VOID CALLBACK DaqErrorHandlerFT(DaqHandleT handle,
DaqError errCode);
typedef DaqErrorHandlerFT *DaqErrorHandlerFPT;
/* Error Handler Function Prototypes */
DAQAPI DaqError WINAPI daqSetDefaultErrorHandler(DaqErrorHandlerFPT
handler);
DAQAPI DaqError WINAPI daqSetErrorHandler(DaqHandleT handle,
DaqErrorHandlerFPT handler);
DAQAPI DaqError WINAPI daqProcessError(DaqHandleT handle, DaqError
errCode);
DAQAPI DaqError WINAPI daqGetLastError(DaqHandleT handle, DaqError
*errCode);
DAQAPI VOID CALLBACK daqDefaultErrorHandler(DaqHandleT handle,
DaqError errCode);
DAQAPI DaqError WINAPI daqFormatError(DaqError errorNum, PCHAR msg);
. 그들은 오류 코드 만 반환합니다. 중요한 정보는 포인터를 통해 완료된 입니다. 내가 문서에서 반환 형식에 대한 포인터를 사용하여 작업하는 방법에 아무것도 찾을 수 없습니다, 아마도 충분히 보이지 않았다 하드.
이런 종류의 포장을 위해 올바른 방향으로 누군가 나를 가리킬 수 있습니까? ?
DaqError와 같은 것은 실제로 헤더 파일에 선언 된 열거 형입니다. 이 라이브러리에서 약 1500 행의 abum 열거 형 열거 형입니다. 어떤 도움
감사합니다,