问题标签 [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.
python - 在 CFFI 中创建 `REAL (* vertices)[DIM]` 类型的 cdata
我正在尝试使用 CFFI围绕一些现有的C 代码构建一个 python 接口。像往常一样,为了提高性能而修剪了 C 代码,它充满了大量的宏和 typedef。
ATM 我正在复制以下结构
我试图调用的函数需要一个 type 的参数Object
。
我已经编写了以下 python 类来表示这样的对象/结构,但是我无法将其转换为预期的 cdata 对象。(现在我只考虑一个 UnitCube,但最终我想概括一下。)
有了上述内容,我在打电话时IndexError: too many initializers for 'double *[3]' (got 8)
排队ptr_vertices = ffi.new("REAL *[3]", vertices )
:
对我来说,似乎尺寸以某种方式切换了。因为它应该是一个包含 3 个元素项的 8 元素数组。我希望有人可以在这里为我指明正确的方向。
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 - 在 Python 中取消引用 FFI 指针以获取底层数组
我有一个用 Rust 编写的 C FFI,src/lib.rs
其名称如下所示:
这是我在项目基础文件夹中的 Cargo.toml:
这是调用 Rust 的 Python 代码,也放在基本文件夹中:
我有充分的理由相信 C 代码是正确的,因为rle_values_size
和rle_values
引用同一个对象,即结构中的 Rust 向量,并且该rle_values_size
函数有效。
但是,当我尝试取消引用 by 给出的指针rle_values
并将其作为数组读取时,我会遇到段错误。
我已经尝试了我在 Stack Overflow 上找到的每一个代码片段排列,但它会出现段错误。
为什么会崩溃?我究竟做错了什么?
我添加了 Rust 标记,因为我可能以错误的方式获取向量的地址。
附言。如果有人也知道如何将它直接读入一个 numpy 数组,我也会赞成。
openssl - 无法从 Common Lisp 中的 p12 文件中提取信息
我正在尝试从 Common Lisp 中以 PKCS#12 加密的客户端证书中提取信息。
我尝试了以下步骤:
- 将给定的 p12 文件加载到
BIO
withd2i_PKCS12_bio
- 验证密码
PKCS12_verify_mac
- 解析文件
PKCS12_parse
这是实际的 CFFI 代码:
但是,结果X509_print_ex
总是没有意义的:
当我用命令尝试它时看起来很好openssl
,所以我假设 p12 文件没问题:
mime 的完整片段在 gist 上。主要功能是load-pkcs12
, 在文件的底部。
有人可以帮忙吗?
我提到的
common-lisp - 如何将代码逐字插入 SWIG 界面?
我需要将代码插入到生成文件的标题中,但是插入的代码是用 Lisp 编写的。由于 SWIG 尝试解析它,它会中断。我需要类似于%pythoncode
命令的东西,但对于 CFFI (Lisp)。
另外,看看这个:https ://github.com/swig/swig/blob/master/Source/Modules/cffi.cxx#L140我是否正确假设除非是真的,否则内容%begin
将被丢弃?CPlusPlus || CWrap
(但我不需要 C 包装器,并且 API 用于 C,而不是 C++)?
lisp - 如何获取 Lisp 进程中可用的所有环境变量的列表?
我想枚举我的 Lisp 进程中可用的所有环境变量的列表。我想要 C 变量返回的相同列表environ
。
SBCL 和 Clozure CL 似乎都没有提供开箱即用的功能。我可以使用 CFFI 吗?
python - Canonical way to free string passed back from a c function in cffi?
If I pass a char *
from c function to python, python should free the memory. However, how should I do that?
My current workaround is to copy the string in python, and then free the string in C immediately. Hence Python can take care of the memory used by ret
automatically.
What's the correct way to do that?
haxe - 将字节数组数据从 C++ 传递到 Haxe
我们正在尝试将原始数据从 C++ 传递到 Haxe,但我们有很多高音。
我们尝试了这个解决方案http://community.openfl.org/t/passing-bytes-from-c-to-haxe/8046/2但对我们不起作用。
C++
斧头
python - 如何在 python cffi 中实例化一个结构?
我正在尝试使用 Python cffi 库实例化一个结构。我想从我自己的 .h 文件和标准库中实例化一个结构。
lisp - SBCL 出现奇怪的 CFFI 回调错误
我有这个 Common Lisp 代码,它是与 PortAudio 的 CFFI 绑定:https ://github.com/thodg/cffi-portaudio
第一次使用 ASDF 构建时,它不会发出警告,但如果我尝试重新加载系统,它会告诉我这些:
然后——无论我加载代码一次还是两次,都没有区别——如果我运行 TEST 函数,它会使 SBCL 崩溃并显示以下奇怪的消息:
我的回调中没有浮点数,所以这个错误对我来说似乎很奇怪。START-STREAM 之前的一切似乎都运行正常。但随后 START-STREAM 跳转到回调并崩溃。
我究竟做错了什么 ?