python ctypes - 包装空指针

python ctypes - wrap void pointer

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

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

问题是这个奇怪的空指针。一般来说,我知道什么是空指针,但这个似乎是 "special"。如果我更改 (void*)1 中的 1,程序将不再运行(它是关于查找网络摄像机的)。它没有崩溃,但再也找不到摄像头了。

我尝试了很多不同的东西,最后一次尝试是在 Python:

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

也尝试了"normal"方式:

gVimbaHandle = c_void_p(1)

我的程序没有崩溃,但它告诉我句柄无效... 当我用 gVimbaHandle.value 查看指针时,我得到 1L 作为输出。这可能是 long 数据类型的 L 的问题吗?

有谁知道如何解决这个问题或者可以向我解释 C 中的 "special" (void*)1 指针吗?

非常感谢!

所以 solution/answer 是:

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

感谢@eryksun