ctypes相关内容

通过 ctypes 从 Python 调用的 C 函数返回不正确的值

我用 C 编写了一个简单的函数,它可以将给定的数字提高到给定的幂.当我在 C 中调用它时,该函数返回正确的值,但当我在 Python 中调用它时,它返回一个不同的、不正确的值. 我使用以下命令创建了共享文件:$ gcc -fPIC -shared -o test.so test.c 我尝试了 C 函数的不同配置,其中一些返回预期值,而另一些不返回.例如,当我的函数使用 return x ..
发布时间:2021-12-01 23:51:03 Python

Python 的 ctypes.c_long 是 64 位系统上的 64 位吗?

在 C 中,long 在 64 位系统上是 64 位.这是否反映在 Python 的 ctypes 模块中? 解决方案 long 的大小 取决于内存模型.在 Windows (LLP64) 上为 32 位,在 UNIX (LP64) 上为 64 位. 如果您需要 64 位整数,请使用 c_int64. 如果你需要一个指针大小的整数,使用 c_void_p(“该值表示为整数"). ..
发布时间:2021-11-25 05:36:47 Python

使用 ctypes windll 卸载 64 位 dll 时出错

我发现这里有几篇关于使用 ctypes 卸载 dll 的帖子,我完全按照所说的方式工作从 ctypes 导入 * file = CDLL('file.dll')# 在这里做一些事情handle = file._handle # 获取DLL句柄windll.kernel32.FreeLibrary(句柄) 但是,我使用的是 64 位 python 并且我的 dll 也是为 x64 编译的,我从上 ..
发布时间:2021-11-25 05:35:37 Python

Windll ctypes 调用来自 python 2.7 的可变参数 c 函数在 win64 中有效,但在 win32 中无效

我在 Windows 10-32 和 Windows 10-64 上使用 Python 2.7. 我正在为 C 编译的 stdcall (Windows) DLL (= mydll) 编写一个 python 包装器.我有 2 个版本的 DLL - 32 位和 64 位.64 版本使用 windll.mydll 效果很好.32 版本对 DLL 上的所有函数使用相同的命令效果很好,除了类似可变参 ..
发布时间:2021-11-24 23:55:14 Python

如何从指针创建 n-dim numpy 数组?

我已经阅读了有关 numpy.frombuffer 的内容,但找不到任何从指针创建数组的方法. 解决方案 正如上面评论中指出的,你可以使用 numpy.ctypeslib.as_array: numpy.ctypeslib.as_array(obj, shape=None) 从 ctypes 数组或 ctypes POINTER 创建一个 numpy 数组.numpy 数组与 ..
发布时间:2021-11-18 04:17:42 Python

如何将二维数组从 Python 传递给 C?

我正在尝试使用 ctypes 将一个二维数组从 Python 传递到 C.数组数据类型是 uint16.我写了一个简单的代码只是为了理解它是如何工作的: C: #include __declspec(dllexport) uint16_t 测试(uint16_t **arr){返回 (arr[5][5]);} 蟒蛇: 将 numpy 导入为 np从 ctypes 导入 cdll导入 c ..
发布时间:2021-11-18 03:07:28 Python

如何使用 ctypes 将数组从 C++ 函数返回到 Python

我正在使用 ctypes 在 Python 中实现 C++ 函数.C++ 函数应该返回一个指向数组的指针.不幸的是,我还没有弄清楚,如何在 Python 中访问数组.我试过 numpy.frombuffer,但没有成功.它只是返回一个任意数字的数组.显然我没有正确使用它.这是一个大小为 10 的数组的简单示例: function.cpp 的内容: extern "C" int* funct ..
发布时间:2021-11-18 02:40:33 C/C++开发

即使我有一个,EnumDisplayDevices 也会提供两个显示

我正在使用 Python 制作 Night Light 应用程序.我正在使用 Windows API 来使用 Gamma Ramp 来完成我的任务.我使用 user32.dll 中的 EnumDisplayDevicesW 来获取连接到我 PC 的显示器的信息和数量. 我只有一台显示器连接到我的桌面,但输出提供了两台显示器的信息. 这是我的代码.我正在使用 Python 并通过 cty ..
发布时间:2021-11-15 01:36:31 Python

如何在 Windows 上找到当前的系统缓存大小?

搜索了高低,但无法找到 API 调用来检索 Windows 上(文件)系统缓存的当前大小. GlobalMemoryStatusEx - 检索 Total、Free、Used 和 Swap 统计数据. GetSystemFileCacheSize - 返回它可能的最小值和最大值,不是很有帮助. 我还尝试了 Windows 扩展,它返回了下面的无用数字.看起来它可能是 1mb 到 ..
发布时间:2021-09-25 20:32:01 Python

Python Ctypes 键盘事件

我有一些 Python 2.7 代码如下: import ctypesctypes.windll.user32.keybd_event(0xA5, 0, 0, 0) # 右键菜单键ctypes.windll.user32.keybd_event(0x73, 0, 0, 0) # F4ctypes.windll.user32.keybd_event(0x0D, 0, 0, 0) #回车键 每当我 ..
发布时间:2021-09-25 19:19:30 Python

无法在 Python 中导入 dll 模块

几天来,我一直在努力在 Windows 上编译一个修改过的 libuvc 版本,现在我终于完成了,我似乎无法在 Python 上加载它.我已经在 Linux 机器上使用相同版本的 Python 编译并成功导入的这个库根本不喜欢 w10. 系统 赢得 10 64 位 python 3.8 64 位 libusb 1.022 使用 MinGW64 编译的 libuvc.dll ..
发布时间:2021-09-25 18:39:48 Python

尽管我在 python ctypes 中设置了信号处理程序,但不会调用它

我已经尝试使用 sigaction 和 ctypes 设置信号处理程序.(我知道它可以在 python 中使用信号模块,但我想尝试学习.) 当我将 SIGTERM 发送到此进程,但它不调用我设置的处理程序时,只打印“已终止".为什么它不调用处理程序? 我使用 Ubuntu 19.10 和 Python 3.7.5 x64. import ctypes从 ctypes 导入 *从 ct ..
发布时间:2021-09-12 19:07:45 服务器开发