我正在通过ctypes将一个C库包装成Python目前我在一个参数上停留在一条或多条线上这里是C代码:

void* gVimbaHandleFake = (void*)1;
err = VmbFeatureBoolGet(gVimbaHandleFake, "GeVTLIsPresent", &isGigE );

问题是这个奇怪的空指针一般来说,我知道什么是空指针,但这一个似乎是“特殊的”如果我在(void*)1中更改1,程序将不再工作(它是关于查找网络摄像机的)它没有坠毁,但再也找不到摄像头了。
我尝试了很多不同的方法,最后一次是在Python中:
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语言中的“特殊”指针吗?
非常感谢你!

最佳答案

因此,解决方案/答案是:

gVimbaHandle = c_void_p(1)
err = self.dll.VmbFeatureBoolGet(gVimbaHandle, "GeVTLIsPresent", byref(isGigE))

谢谢@eryksun

08-24 22:59