this guide 다음에 나오는 Python에서 dll에 액세스하려고합니다. 내가 dll에서 시도하고 호출하는 첫 번째 함수는 제대로 작동하는 것 같습니다. 따라서 대부분의 방법으로 사용해야하지만 두 번째 함수는 액세스 위반을 발생시킵니다.Python ctypes access violation
파이썬 코드 : 나는 제로 (핸들)을 호출 할 때
#create open function
openProto = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_void_p)
openParams = (1, "handle", 0) ,
open = openProto (("SensorOpen", pm), openParams)
#create zero function
zeroProto = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_int)
zeroParams = (1, "handle", 0),
zero = zeroProto (("SensorZero", pm), zeroParams)
handle = ctypes.c_int (0)
status = ctypes.c_int (0)
open(ctypes.byref(handle))
print handle
zero(handle)
액세스 위반이 발생합니다. 이 작업을 수행
는 C++ 코드는 여기에 있습니다 : SENSOR_HANDLE는
SENSOR_HANDLE seHandle; // Sensor handle
double power;
char buff[80];
// Get handle for sensor
SensorOpen (&seHandle);
printf ("Sensor connected\nZeroing, please wait...\n");
while (SensorZero (seHandle) == SENSOR_ZERO_FAILED)
{
printf ("Zero failed.\nCheck no power is being applied.\nPress return key to retry ");
gets (buff);
}
그냥 typedef
는 int
어떤 아이디어 거라고? 반환 된 값으로 아무 것도하지 않는 것이 좋습니다.
"SOLVED"는 아무 곳에 써서도 안됩니다. 그 대답은 받아 들여지는 것입니다. 문제를 해결했다면 직접 솔루션을 작성하십시오. –
다른 예를 찾으십시오. 그것은 ctypes를 사용하는 것이 가장 혼란스러운 방법입니다. http://stackoverflow.com/a/4353259/235698을 방문하십시오. –
@AlexanderR 2 일 동안 내 자신의 솔루션을 올바른 것으로 표시 할 수 없었으며 필요하지 않다는 것을 깨닫기 위해 전체 질문을 읽게하여 다른 사람의 시간을 낭비하고 싶지 않았습니다. 나는 그것을 지금 제거했다. – TheLastBert