1
나는 ctypes를 통해 파이썬에 C 라이브러리를 래핑합니다. 지금 나는 하나의 매개 변수에 한 줄 이상 붙어 있습니다. 여기에 C 코드 :파이썬 ctypes - 랩 무효 포인터
void* gVimbaHandleFake = (void*)1;
err = VmbFeatureBoolGet(gVimbaHandleFake, "GeVTLIsPresent", &isGigE);
이 이상한 무효 포인터입니다. 일반적으로 void 포인터가 무엇인지는 알지만이 포인터는 "특별한"것으로 보입니다. (void*)1
에서 1을 변경하면 프로그램이 더 이상 작동하지 않습니다 (네트워크 카메라를 찾는 것입니다). 그것은 부서지는 것이 아니라 카메라를 더 이상 발견하지 못합니다.
gVimbaHandle = cast(1, c_void_p)
err = self.dll.VmbFeatureBoolGet(byref(gVimbaHandle), "GeVTLIsPresent", byref(isGigE))
:
gVimbaHandle = c_void_p(1)
내 프로그램의 밤은 충돌하지만 핸들이 있음을 알려줍니다 유효하지 않습니다 ... gVimbaHandle.value
으로 포인터를 살펴볼 때 1L
이 출력됩니다. 이것이 문제가 될 수 있습니까? 긴 데이터 유형의 경우 L
?
아무도이 문제를 해결하는 방법을 알고 있거나 C의 "특별"(void*)1
포인터를 설명 할 수 있습니까?
대단히 감사합니다!
gVimbaHandle = c_void_p(1)
err = self.dll.VmbFeatureBoolGet(gVimbaHandle, "GeVTLIsPresent", byref(isGigE))
덕분에 당신은 참조로 포인터를 전달하는
을 @eryksun하지만, 예를 들어 C 코드 값을 전달합니다 – eryksun
오 그래 맞아, 파이썬과 C 포인터 조합의 것들과 혼란 스러웠다. 그리고 didnt는 이것을 보았다. .. 고맙습니다. 그것을 위해 고쳐졌습니다. u로 답변을 게시하면 솔루션으로 표시됩니다. 다시 한 번 감사드립니다. –