问题标签 [python-cffi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gevent - 关于 gevent (cffi) 设置的一些混淆
在 Gevent 1.1 中有两个后端,cython 和 cffi。我感到困惑的是_corecffi_build.py。
在第 331 行,
我不知道为什么ffi.set_source没有指定源以包含相关的 c 文件。_source只包含一些声明。
c源文件是如何包含的?
python - Python CFFI - 无法在函数调用中使用格式化的 Python 字符串作为字节数组
我正在学习如何包含写入代码的各种方法,C
因为Python
我有一个用于 Microchip 设备的 API,使用起来非常……乏味,我想通过添加一个Python
包装器来让我的生活更轻松它可以让我更快地测试东西。这样做的一种方法是使用cffi
模块,该模块甚至为其用户提供verify()
基本上调用C
编译器以检查所提供cdef(...)
的是否正确的模块。
我写了一个小项目,以便我可以首先学习如何正确使用cffi
. 它由两部分组成
库- 用 C 编写。我使用
cmake
并make
相应地编译它的代码:CMakeLists.txt
testcffi.h
/li>testcffi.c
Python 中的测试代码
/li>struct
- 代码演示了上述库中的三个函数的用法:
问题来自我必须将Python
字符串转换为的字节数组,以便将数据传递到C
代码中的相应位置。
上面的代码正在运行,但是我想使用其他类似于b'hello'
. 这就是为什么我尝试使用format()
(连同它的缩写%
) inPython
来组合一堆字母和一个数字但是。它没有成功。我要么得到my 参数的""
值,要么得到一个奇怪的交替垃圾数据(主要是既不是字母也不是数字的奇怪字符)。label
point_t
struct
我以为我使用的encode()
函数不正确,但是当我在Python
交互式 shell 中测试它时,我得到了与 using 相同的输出b'...'
。
知道这里发生了什么吗?
一个很好知道的问题:从我目前所读的内容来看,似乎cffi
使用垃圾收集Python
来释放 C 代码中动态分配的内存。我已经用一堆点测试了它,但我想确保这实际上总是如此。
更新:
好的,所以看起来没有new(...)
做的事情但是在这种情况下所有的值都与循环中的最后一个值相同。例如,如果循环达到 10,那么所有struct
Python 对象的标签中都会包含 10。这似乎是一个参考问题。当我使用时,new(...)
我得到垃圾数据。
python - 取消引用在 Python CFFI 中使用 ffi.addressof 创建的指针(等效于 C *-operator?)
使用 Python CFFI,上面的代码创建了一个指向 as 的第一个元素的values
指针pValue
。
然后,您可以使用 访问其内容values[ 0 ]
,但这并不是真正透明的,并且有时不方便跟踪什么索引是什么值。
是否有诸如 C *-operator
、函数或其他东西之类的东西可以取消引用pValue
并直接访问其内容?
在其他语言中...:
编辑:
这是一个有用的用例:
我发现这样做更具可读性:
而不是:
我猜前者更快。但是,当您想访问这些值时,记住“ok type is number 0”等不方便......
c++ - 如何在 CFFI 中找到指向结构的指针的地址并将其转换为 void**
我的 C++ 代码是
我的功能是
我是 CFFI 的新手。所以我的问题是
我怎样才能在 CFFI 中达到同样的效果?
如何在CFFI中找到指针的地址,指向结构的指针?
我知道铸造void**
可以通过
但是我怎样才能得到那个地址并传递给函数呢?
windows - 如何在 Windows 7 64 位上安装 Cffi python 模块?
有没有办法在不使用 MinGW 的情况下在 Windows 7 64 位环境中开始使用 cffi ?需要安装哪些所有软件包?
python - How to properly wrap a C library with Python CFFI
I am trying to wrap a very simple C library containing only two .C source files: dbc2dbf.c and blast.c
I am doing the following (from the documentation):
This is not quite working. I think I am not including blast.c correctly;
can anyone help?
python - 如何通过 FFI 传递 Numpy PyArray*
想法是能够从库中修改数组,就像函数的“输出”一样。例子:
python - pip install -d 不为 cffi 创建轮子
我正在尝试为 python 代码创建“离线包”。
我正在运行
pip install -d <dest dir> -r requirements.txt
事情是cffi==1.6.0
(在 requirements.txt 中)没有内置到轮子中。
有没有办法我可以做到?(我试图避免目标机器中 gcc 的依赖)
python-3.x - cffi.api.CDefError:解析错误 Python
使用 cffi,我试图在 Python 代码中调用一些 Rust 函数。这是python代码:
这是锈代码:
我编译了这个库:
但是当我运行我的 python 脚本时,我得到了这个堆栈:
我错过了什么吗?
我尝试了几个版本:ffi.cdef('float norm(float**)')
. 喜欢ffi.cdef('float norm(Vec< Vec<float>>)')
或ffi.cdef('float norm(float[][])')
但它也不起作用。
感谢您以后的回复。
python - CFFI 能否在 Python 3.4 和 3.5 中使用相同的 DLL?
此页面记录了每个 Python 版本所需的不同版本的 Microsoft Visual C++ 编译器:https ://wiki.python.org/moin/WindowsCompilers
我想使用 MinGW 而不是 Microsoft 为 64 位 Windows 8.1 编译 C 库,但我读过 MinGW-w64/mingwpy 不支持 Python 3.5: Make cffi use MinGW under Python 3.5 on Windows
我还看到http://mxe.cc/用于交叉编译到 Windows,但它也使用 MinGW-w64 工具链。
如果我对 Python 接口使用 CFFI 的 ABI 内联模式,我可以为 C 库编译一次 DLL(与 Microsoft Visual C++ 10.0 兼容)并将其与 Python 3.4 和 3.5 一起使用吗?如果是这样,是否因为静态链接到 DLL 而实现了与 Python 3.5 的兼容性?我不明白动态与静态链接的微妙之处。