Próbuję napisać kod Pythona do wywołania funkcji DLL i utknąć w funkcji poniżej, , które moim zdaniem jest związane z funkcją wywołania zwrotnego typedef lub funkcją wskaźnik rzecz.Pisanie Python ctypes funkcji wywołania zwrotnego funkcji w C
Przetestowałem poniższy kod, gdy wywoływana jest funkcja wywołania zwrotnego, python ulega awarii (powiadomienie o oknie - python.exe przestał odpowiadać) bez komunikatów debugowania.
Jestem głęboko mylić, każda pomoc będzie mile widziane :)
Dzięki!
C:
#ifdef O_Win32
/** @cond */
#ifdef P_EXPORTS
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif // #ifdef P_EXPORTS
/** @endcond */
#endif // #ifdef O_Win32
// Type definition
typedef void (__stdcall *StatusCB)(int nErrorCode, int nSID, void *pArg);
//Function
void GetStatus(StatusCB StatusFn, void *pArg);
Python:
from ctypes import *
def StatusCB(nErrorCode, nSID, pArg):
print 'Hello world'
def start():
lib = cdll.LoadLibrary('API.dll')
CMPFUNC = WINFUNCTYPE(c_int, c_int, c_void_p)
cmp_func = CMPFUNC(StatusCB)
status_func = lib.GetStatus
status_func(cmp_func)
Działa! dzięki za trylion! – genxstylez