python ctypes - 包装空指针

标签 python c sdk ctypes word-wrap

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

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

问题是这个奇怪的 void 指针。一般来说,我知道什么是空指针,但这个指针似乎很“特殊”。如果我更改 (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 中的“特殊”(void*)1 指针吗?

非常感谢!

最佳答案

所以解决方案/答案是:

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

谢谢@eryksun

关于python ctypes - 包装空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43851171/

相关文章:

c# - 在 SDK 中使用 log4net

python - django 自动填充管理中的 manytomany 字段

java - RPI 与 rs485 上的多张图片 - CCS 编译器

ios - AWS SDK S3 上传凭证

c - 从 C 中的函数返回矩阵

c - 如何使用 OpenSSL libcrypto 生成 DSA key 对?

iphone - 如何在XCode(iOS SDK)中添加按钮到注释 View

python - 按钮的 Tkinter 命令不起作用

python - 根据自定义用户模型的顺序修改字段

python - 多个服务器 pymodbus 连接问题 Modbus TCP