问题标签 [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.

0 投票
2 回答
68 浏览

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 元素数组。我希望有人可以在这里为我指明正确的方向。

0 投票
0 回答
1403 浏览

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[][])') 但它也不起作用。

感谢您以后的回复。

0 投票
1 回答
584 浏览

python - 在 Python 中取消引用 FFI 指针以获取底层数组

我有一个用 Rust 编写的 C FFI,src/lib.rs其名称如下所示:

这是我在项目基础文件夹中的 Cargo.toml:

这是调用 Rust 的 Python 代码,也放在基本文件夹中:

我有充分的理由相信 C 代码是正确的,因为rle_values_sizerle_values引用同一个对象,即结构中的 Rust 向量,并且该rle_values_size函数有效。

但是,当我尝试取消引用 by 给出的指针rle_values并将其作为数组读取时,我会遇到段错误。

我已经尝试了我在 Stack Overflow 上找到的每一个代码片段排列,但它会出现段错误。

为什么会崩溃?我究竟做错了什么?

我添加了 Rust 标记,因为我可能以错误的方式获取向量的地址。

附言。如果有人也知道如何将它直接读入一个 numpy 数组,我也会赞成。

背景信息:如何在 pub extern "C" fn 中返回一个数组?

0 投票
0 回答
439 浏览

openssl - 无法从 Common Lisp 中的 p12 文件中提取信息

我正在尝试从 Common Lisp 中以 PKCS#12 加密的客户端证书中提取信息。

我尝试了以下步骤:

  1. 将给定的 p12 文件加载到BIOwithd2i_PKCS12_bio
  2. 验证密码PKCS12_verify_mac
  3. 解析文件PKCS12_parse

这是实际的 CFFI 代码:

但是,结果X509_print_ex总是没有意义的:

当我用命令尝试它时看起来很好openssl,所以我假设 p12 文件没问题:

mime 的完整片段在 gist 上。主要功能是load-pkcs12, 在文件的底部。

有人可以帮忙吗?

我提到的

0 投票
1 回答
148 浏览

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++)?

0 投票
1 回答
2263 浏览

lisp - 如何获取 Lisp 进程中可用的所有环境变量的列表?

我想枚举我的 Lisp 进程中可用的所有环境变量的列表。我想要 C 变量返回的相同列表environ

SBCL 和 Clozure CL 似乎都没有提供开箱即用的功能。我可以使用 CFFI 吗?

0 投票
1 回答
211 浏览

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?

0 投票
1 回答
375 浏览

haxe - 将字节数组数据从 C++ 传递到 Haxe

我们正在尝试将原始数据从 C++ 传递到 Haxe,但我们有很多高音。

我们尝试了这个解决方案http://community.openfl.org/t/passing-bytes-from-c-to-haxe/8046/2但对我们不起作用。

C++

斧头

0 投票
2 回答
1983 浏览

python - 如何在 python cffi 中实例化一个结构?

我正在尝试使用 Python cffi 库实例化一个结构。我想从我自己的 .h 文件和标准库中实例化一个结构。

0 投票
0 回答
361 浏览

lisp - SBCL 出现奇怪的 CFFI 回调错误

我有这个 Common Lisp 代码,它是与 PortAudio 的 CFFI 绑定:https ://github.com/thodg/cffi-portaudio

第一次使用 ASDF 构建时,它不会发出警告,但如果我尝试重新加载系统,它会告诉我这些:

然后——无论我加载代码一次还是两次,都没有区别——如果我运行 TEST 函数,它会使 SBCL 崩溃并显示以下奇怪的消息:

我的回调中没有浮点数,所以这个错误对我来说似乎很奇怪。START-STREAM 之前的一切似乎都运行正常。但随后 START-STREAM 跳转到回调并崩溃。

我究竟做错了什么 ?