问题标签 [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 投票
1 回答
787 浏览

python - cffi:如何将字符串的字符地址发送到 C 函数?

我实际上正在用 cffi 模块编写一个 python 程序来测试我的 C/ASM 库,并且我设法让它工作。但我不知道如何访问字符串中间的字符地址以将其传递给我的 lib 函数。举个例子:

打印:

b'你好世界'

b'\x00\x00\x00\x00\x00 世界'

但是我怎样才能测试类似的东西:

我尝试了不同的东西,比如:

输出:

TypeError:ctype 'void *' 的初始化程序必须是 cdata 指针,而不是 int

也尝试了id(),但没有成功......

我对python不是很熟悉,但它似乎不是一个简单的利用它,所以这里的帮助很少,谢谢!

Python 3.7.0

0 投票
1 回答
796 浏览

python - setuptools 和 cffi:如何更改库路径

我正在使用 cffi 创建一个 python 程序来测试我的 C/ASM 库与真正的 libc 函数。

我尝试使用 setuptools 来设置我不同的 cffi 模块。所以这是我的文件树:

在此处输入图像描述

这是我的 libftasm_builder.py:

和我的 setup.py:

所以它构建得很好,正如你在文件树中看到的那样,我有我的 cffi_files,但是当我尝试执行我的 libasm_tester.py 时,我有这个错误:

我不明白为什么它会尝试从 build/lib/_libasm_cffi.abi3.so 打开 lib,因为我告诉 libasm_builder:

我在这里想念什么?:( 。 谢谢你 !!

[编辑]

在我的 libasm_tester.py 中,我必须在我的文件顶部添加它才能导入 cffi_modules:

也许是原因?但如果我不添加它,我将无法导入 cffi 模块......

0 投票
1 回答
183 浏览

python - 路径不能包含斜杠

我正在尝试使用 Python 和 CFFI 模块在 C 中进行单元测试。它几乎可以工作,但我不能将它用于子目录。

在测试时,我的项目看起来像:

但是当我为我的项目转换它时:

我的make check运行如下:

我必须调整我的测试文件:

注意这一行:

所以我的日志是

但它不是一个模块,它是一个简单的目录。

你有解决办法吗?

问候。

0 投票
1 回答
306 浏览

common-lisp - 在不复制数据的情况下将外部内存解释为 lisp 内存(反之亦然)

我尝试使用数据库 API C 函数(例如,)将 BLOB 逐块写入数据库db-write-chunk。此函数将指向外部内存(放置块的位置)的指针作为参数。所以,我为一个块做缓冲区:foreign-buffer。我将从文件(或二进制流)中获取块read-sequence数据stream-buffer

L在 BLOB 中是大的,循环可能会迭代很多次。除此之外,所有这些代码都可能被外部循环(例如批量插入)包装。所以,我想尽量减少循环体中的步骤数。

要做到这一点,我需要:

  • 能够不将序列读入流缓冲区,而是直接读入外部缓冲区,如下所示:

    /li>
  • 或者能够将流缓冲区解释为外部内存,如下所示:

    /li>

是否可以仅使用单个缓冲区(本机或外部缓冲区)来解决我的问题,而无需在它们之间复制内存?

0 投票
1 回答
952 浏览

python - 由于 cffi.api.CDefError 无法使用 pyinstaller

谁能看看我的 pyinstaller 出了什么问题?

我也尝试将 .py 文件转换为 .exe 文件,但产生了同样的错误

更新。12/15。顺便说一句,我已经在我的计算机上安装了 python 2.7 和 python 3,这会是问题吗?

但是,我尝试在 C:\Python27\Scripts 下安装 pyinstaller 以避免 2 个 python 之间的冲突。(我不确定这是否仍然会导致问题,但我只是尝试列出我所知道的问题的所有细节。)

新的更新。12/16。我试图将我的目标文件(要转换)移动到安装了 pyinstaller 的脚本文件夹中,该文件将被成功转换。但是脚本文件夹会乱七八糟,因为会生成多个文件夹和文件。

我在下面添加了从 cmd 生成的问题:)

0 投票
0 回答
888 浏览

python - 在 raspbian 拉伸上安装 python 包 brypt 和 cffi 时出错

我正在尝试安装依赖于 cffi 的 brypt,

但这会导致如下所示的错误:

我最初是在我的 MacBook 上测试我的网络应用程序,但是当我上传到基于 raspbian 的服务器上,并尝试从 requirements.txt 安装时,只有 brcypt 安装失败。

0 投票
1 回答
261 浏览

c - Pypy CFFI 内存管理问题

T 试图通过添加一些 c 函数来加速我的 Pypy 代码。问题是,内存使用量一直在增加!我看到了一些关于这个主题的帖子,并尝试做一个简单的测试来说明这一点。在下面的测试中,我可以根据这篇文章(Python CFFI 内存管理问题)释放内存,但我的代码崩溃如下:free(): invalid next size (normal)。看来我双重释放内存...

谁能帮我解决我的问题?

0 投票
0 回答
160 浏览

python - 如何与 numba 中的 cffi void 指针交互

我有一个 C 库,它与 CFFI 接口,定义如下:

zkdtree请注意,从未引用过类似事物的内部结构。

目前我正在加载一个包含相应符号的动态库:

我希望能够在 numba jitted 函数(在 nopython 模式下)中调用这些函数并交易各种匿名结构(如 zkdtree)。我看过这个模块numba.cffi_support,但似乎不知道如何教它理解我的定义。

我尝试过各种变化,但均未成功

但我无法让它同时tree与 和一起使用err。我收到类似的错误

0 投票
1 回答
145 浏览

common-lisp - 如何从 cffi:list-foreign-libraries 获取外国库的绝对路径?

假设我想创建 Common Lisp 应用程序中使用的当前动态库的转储。鉴于cffi:list-foreign-libraries的结果,我如何获得外国图书馆的绝对路径?

如果给定的解决方案可以在操作系统方面或至少在 CL 实现方面具有可移植性,那就太好了。

例子

0 投票
0 回答
303 浏览

python-3.x - CFFI 编译带有依赖项的 libpango?(泰国/弗里比迪/达特里)

我正在尝试为 aws lambda 设置一个预编译包,其中必须包含所有必需的库。

我的依赖是:pango 和 cairo

所以,我所做的是去https://fedora.pkgs.org并下载它们的 64 个版本,但是当我第一次执行我的代码 (WeasyPrint/cffi) 时,它给了我以下信息:

OSError:无法加载库“pango-1.0”:libthai.so.1:无法打开共享对象文件:没有这样的文件或目录。此外,ctypes.util.find_library() 无法找到名为“pango-1.0”的库

所以我只是去了上面提到的同一个网站,下载了 libthai,然后它对 libfridi 给出了同样的错误,然后对 libdatrie 给出了同样的错误。

我只是担心这永远不会停止,是否有任何编译过的 pango 具有所有这些依赖项?

毫无价值,我完全不知道自己在做什么,只是试图让它发挥作用。