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 访问 DLL 函数——按函数 *name* 访问失败

myPythonClient(下面)想要调用一个 ringBell 函数(使用 ctypes 从 DLL 加载).但是,尝试通过 name 访问 ringBell 会导致 AttributeError.为什么? RingBell.h 包含 namespace MyNamespace{我的课堂{民众:静态 __declspec(dllexport) int ringBell (void);} ..
发布时间:2021-11-30 15:32:00 Python

Python:WindowsError:异常:访问冲突读取0x00000000

这个简短的函数只是获取存储设备的可用空间,但是在运行代码时出现上述错误. 功能是: def disk_space1(drive):自由空间 = ctypes.c_ulonglong()calcspace = ctypes.windll.kernel32.GetDiskFreeSpaceExA计算空间(驱动器,ctypes.byref(自由空间))disk_size = 空闲空间.值返回磁盘 ..
发布时间:2021-11-26 20:20:20 Python

Windows 公共项对话框:ctypes + COM 访问冲突

我正在尝试使用 ctypes 模块来调用 Windows 的 公共项目对话框 API.下面显示的代码大致基于 MSDN 文档.它唯一的依赖项是 comtypes.GUID 模块. import ctypes从 ctypes 导入 byref、POINTER、c_int、c_long从 ctypes.wintypes 导入 HWND、HRESULT从 comtypes 导入 GUIDCLSID_F ..
发布时间:2021-11-26 20:09:01 Python

“WindowsError:异常:访问冲突……"- ctypes 问题

这是驻留在 DLL 中的 C 函数的原型: extern "C" void__stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*); 在另一个线程中,我询问了如何正确地创建并向该函数发送必要的参数. 这里是线程:我如何包装这个 C 函数,有多个参数,有 ctypes? 所以 ..
发布时间:2021-11-26 20:02:56 Python

python中ReadProcessMemory读取64位进程内存的问题

我在使用 ReadProcessMemory 读取 64 位进程 (Minesweeper) 的内存时收到错误代码 998 (ERROR_NOACCESS).我在 windows 7 64 位上使用 python 3.5 64 位. 奇怪的是,这个错误只发生在较高的地址上,例如 0x 0000 0000 FF3E 0000.较低的地址,例如 0x 0000 0000 0012 AE40 不会 ..
发布时间:2021-11-25 06:59:08 C#

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 C#

使用 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 C#

Python ctypes 可以在 x86-64 上加载 32 位 C 库吗?

我有一个安装了 32 位库的 64 位 RHEL 主机.一个供应商有一个 32 位.所以我想使用 ctypes 加载到 Python 中. from ctypes import CDLLCDLL('32bitdinosaur.so')OSError: 32bitdinosaur.so: ELF 类错误: ELFCLASS32 当然 64 位库是可以的.例如: CDLL('libc.so.6' ..
发布时间:2021-11-25 00:19:26 C#

如何从指针创建 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 ctypes 中的指针和数组

我有一个包含 C 函数的 DLL,其原型如下: int c_read_block(uint32 addr, uint32 *buf, uint32 num); 我想使用 ctypes 从 Python 调用它.该函数需要一个指向一块内存的指针,它将把结果写入其中.我不知道如何构造和传递这样一块内存.ctypes 文档没有多大帮助. 构造一个数组并将其传递给“byref",如下所示 ..
发布时间:2021-11-18 03:56:50 其他开发

如何将双指针 ctype 转换为 numpy 数组?

嘿,我得到了这段代码,我用它来将 numpy 2d 数组转换为 ctype 双指针. import ctypes as ct将 numpy 导入为 nparr = np.empty([500, 500], dtype=np.uint8)UI8Ptr = ct.POINTER(ct.c_uint8)UI8PtrPtr = ct.POINTER(UI8Ptr)ct_arr = np.ctypesli ..
发布时间:2021-11-18 03:47:36 其他开发

如何将二维数组从 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 其他开发

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

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

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

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

从 mod_wsgi django 应用程序导入 numpy 时偶尔出现 ctypes 错误

设置如下: 导入 ctypes 的 mod_wsgi 上的 Django (1.2) 应用 Python 2.6.5 Apache 2.2.3 禁用 SELinux 红帽 EL 5 64 位 某些文件系统挂载在 nfs 上 有时,当我重新启动 apache 时,我会在尝试导入 ctypes 时遇到导入错误.每个传入请求都失败并显示 500 错误.如果我重新启动 apache ..
发布时间:2021-11-11 05:18:21 其他开发

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

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

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 的 Windows 挂钩

我正在尝试将一个钩子连接到 Windows 并使用 Python 来记录击键.为此,我使用了 LowLevelKeyboard 回调程序. def run():全局 KeyBdHook全球讯息KeyBdHook = HHook()消息 = []开始 = time.time()#记录击键2秒.而 time.time() ..
发布时间:2021-09-25 18:54:08 其他开发