ctypes相关内容
我用c写了一个dll库,用vs2017 64位编译,尝试用python3.6 64位加载.然而,对象的成员变量的地址被截断为 32 位. 这是我编译为 sim.dll 的 sim.c 文件: 类检测器{民众:探测器();void process(int* pin, int* pout, int n);私人的:int member_var;};探测器::探测器(){memset(&membe
..
我用 C 编写了一个简单的函数,它可以将给定的数字提高到给定的幂.当我在 C 中调用它时,该函数返回正确的值,但当我在 Python 中调用它时,它返回一个不同的、不正确的值. 我使用以下命令创建了共享文件:$ gcc -fPIC -shared -o test.so test.c 我尝试了 C 函数的不同配置,其中一些返回预期值,而另一些不返回.例如,当我的函数使用 return x
..
myPythonClient(下面)想要调用一个 ringBell 函数(使用 ctypes 从 DLL 加载).但是,尝试通过 name 访问 ringBell 会导致 AttributeError.为什么? RingBell.h 包含 namespace MyNamespace{我的课堂{民众:静态 __declspec(dllexport) int ringBell (void);}
..
这个简短的函数只是获取存储设备的可用空间,但是在运行代码时出现上述错误. 功能是: def disk_space1(drive):自由空间 = ctypes.c_ulonglong()calcspace = ctypes.windll.kernel32.GetDiskFreeSpaceExA计算空间(驱动器,ctypes.byref(自由空间))disk_size = 空闲空间.值返回磁盘
..
我正在尝试使用 ctypes 模块来调用 Windows 的 公共项目对话框 API.下面显示的代码大致基于 MSDN 文档.它唯一的依赖项是 comtypes.GUID 模块. import ctypes从 ctypes 导入 byref、POINTER、c_int、c_long从 ctypes.wintypes 导入 HWND、HRESULT从 comtypes 导入 GUIDCLSID_F
..
这是驻留在 DLL 中的 C 函数的原型: extern "C" void__stdcall__declspec(dllexport) ReturnPulse(double*,double*,double*,double*,double*); 在另一个线程中,我询问了如何正确地创建并向该函数发送必要的参数. 这里是线程:我如何包装这个 C 函数,有多个参数,有 ctypes? 所以
..
在 C 中,long 在 64 位系统上是 64 位.这是否反映在 Python 的 ctypes 模块中? 解决方案 long 的大小 取决于内存模型.在 Windows (LLP64) 上为 32 位,在 UNIX (LP64) 上为 64 位. 如果您需要 64 位整数,请使用 c_int64. 如果你需要一个指针大小的整数,使用 c_void_p(“该值表示为整数").
..
我发现这里有几篇关于使用 ctypes 卸载 dll 的帖子,我完全按照所说的方式工作从 ctypes 导入 * file = CDLL('file.dll')# 在这里做一些事情handle = file._handle # 获取DLL句柄windll.kernel32.FreeLibrary(句柄) 但是,我使用的是 64 位 python 并且我的 dll 也是为 x64 编译的,我从上
..
我有一个安装了 32 位库的 64 位 RHEL 主机.一个供应商有一个 32 位.所以我想使用 ctypes 加载到 Python 中. from ctypes import CDLLCDLL('32bitdinosaur.so')OSError: 32bitdinosaur.so: ELF 类错误: ELFCLASS32 当然 64 位库是可以的.例如: CDLL('libc.so.6'
..
我在 Windows 10-32 和 Windows 10-64 上使用 Python 2.7. 我正在为 C 编译的 stdcall (Windows) DLL (= mydll) 编写一个 python 包装器.我有 2 个版本的 DLL - 32 位和 64 位.64 版本使用 windll.mydll 效果很好.32 版本对 DLL 上的所有函数使用相同的命令效果很好,除了类似可变参
..
我已经阅读了有关 numpy.frombuffer 的内容,但找不到任何从指针创建数组的方法. 解决方案 正如上面评论中指出的,你可以使用 numpy.ctypeslib.as_array: numpy.ctypeslib.as_array(obj, shape=None) 从 ctypes 数组或 ctypes POINTER 创建一个 numpy 数组.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
..
我正在尝试使用 ctypes 将一个二维数组从 Python 传递到 C.数组数据类型是 uint16.我写了一个简单的代码只是为了理解它是如何工作的: C: #include __declspec(dllexport) uint16_t 测试(uint16_t **arr){返回 (arr[5][5]);} 蟒蛇: 将 numpy 导入为 np从 ctypes 导入 cdll导入 c
..
我正在使用 ctypes 在 Python 中实现 C++ 函数.C++ 函数应该返回一个指向数组的指针.不幸的是,我还没有弄清楚,如何在 Python 中访问数组.我试过 numpy.frombuffer,但没有成功.它只是返回一个任意数字的数组.显然我没有正确使用它.这是一个大小为 10 的数组的简单示例: function.cpp 的内容: extern "C" int* funct
..
我正在使用 Python 制作 Night Light 应用程序.我正在使用 Windows API 来使用 Gamma Ramp 来完成我的任务.我使用 user32.dll 中的 EnumDisplayDevicesW 来获取连接到我 PC 的显示器的信息和数量. 我只有一台显示器连接到我的桌面,但输出提供了两台显示器的信息. 这是我的代码.我正在使用 Python 并通过 cty
..
设置如下: 导入 ctypes 的 mod_wsgi 上的 Django (1.2) 应用 Python 2.6.5 Apache 2.2.3 禁用 SELinux 红帽 EL 5 64 位 某些文件系统挂载在 nfs 上 有时,当我重新启动 apache 时,我会在尝试导入 ctypes 时遇到导入错误.每个传入请求都失败并显示 500 错误.如果我重新启动 apache
..
搜索了高低,但无法找到 API 调用来检索 Windows 上(文件)系统缓存的当前大小. GlobalMemoryStatusEx - 检索 Total、Free、Used 和 Swap 统计数据. GetSystemFileCacheSize - 返回它可能的最小值和最大值,不是很有帮助. 我还尝试了 Windows 扩展,它返回了下面的无用数字.看起来它可能是 1mb 到
..
我有一些 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) #回车键 每当我
..
几天来,我一直在努力在 Windows 上编译一个修改过的 libuvc 版本,现在我终于完成了,我似乎无法在 Python 上加载它.我已经在 Linux 机器上使用相同版本的 Python 编译并成功导入的这个库根本不喜欢 w10. 系统 赢得 10 64 位 python 3.8 64 位 libusb 1.022 使用 MinGW64 编译的 libuvc.dll
..
我已经尝试使用 sigaction 和 ctypes 设置信号处理程序.(我知道它可以在 python 中使用信号模块,但我想尝试学习.) 当我将 SIGTERM 发送到此进程,但它不调用我设置的处理程序时,只打印“已终止".为什么它不调用处理程序? 我使用 Ubuntu 19.10 和 Python 3.7.5 x64. import ctypes从 ctypes 导入 *从 ct
..