问题标签 [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 回答
267 浏览

c++ - 如何在 Haxe 项目中使用简单的 c++ 代码?

我在 cpp 中有一个类,例如:

在任何 .hx 文件中,我想使用在 cpp 中定义的 Foo 类,如下所示:

预期输出为


作为说明,我搜索并阅读了一些关于hxcppHaxe CFFI的文档,但这些文档的某些部分太复杂了。我是 Haxe 的初学者,我需要基本和简单的步骤来解决这个问题。谢谢。

0 投票
1 回答
476 浏览

common-lisp - Common Lisp CFFI:将结构值分配给数组索引

如何将外部数组的索引值分配为外部结构的值。例如,以下内容:

我预计大致相当于

相反,它想调用通用函数cffi:translate-into-foreign-memory。通过这个,有什么办法可以将 SETF 外来内存转换为外来内存?

0 投票
2 回答
444 浏览

windows - 如何在 common lisp / cffi 中使用 windows HANDLE 调用本机 c 函数

本机 c 标头:

HANDLE 定义:

我想要的本机c源:

我在 sbcl 1.3.1 中尝试了以下代码,但没有工作。

顺便说一句:如何获得外物(相机)的地址?我做对了吗?

0 投票
1 回答
148 浏览

c++ - SWIG [C++ to Lisp(CFFI)] 编译包装器时出错

我是 C++ 和 Lisp 与 SWIG 之间接口的初学者。我已经按照 SWIG 的文档进行操作,但我遇到了问题。这是我想要接口的简单程序(它可以在 Lisp 中轻松完成,但它是为了了解如何将 C++ 代码导入 Lisp):

测试.cpp:

测试.hpp:

为了使用 SWIG,我创建了接口文件:

测试.i:

而且,我执行了以下命令行:

但是在编译 test_wrap.cxx 时,终端会说:

任何人都可以帮助我吗?

0 投票
0 回答
224 浏览

common-lisp - CFFI 挂在某些功能上

我正在使用 CFFI 为Chipmunk2d(一个 2D 物理模拟库)编写一个关于 Common Lisp 的 FFI。

当我评估 REPL 时:

打印的输出来自我自己的翻译(见下文),但 REPL 永远不会返回。

我在 Emacs 24.5、Mac OS X 10.10.5 上使用 Slime。上面没有印任何东西*inferior-lisp*

我已经尝试过 CCL 1.11-r16635 (DarwinX8664) 和 SBCL 1.2.0。当我在命令行上直接尝试 sbcl 时,行为是相同的。它挂起,并且没有调试器。

我究竟做错了什么?

我已经测试了其他功能,它们工作正常:

这些是我定义的外国翻译:

这些是我的函数定义:

0 投票
0 回答
140 浏览

c++ - SWIG [C++ to LISP(CFFI)] 如何将 C++ 中的数组包装到 CFFI 列表中?

我有一个简单的 C++ 函数,它返回一个 int 数组(作为指针 (int*)),当包装完成时,CFFI 将其视为指针。这是合乎逻辑的,但我想要的是 CFFI 将其视为一个列表。有没有办法在 SWIG 配置中做到这一点?

谢谢您的帮助

0 投票
1 回答
1192 浏览

pointers - Common Lisp CFFI:指向指针的指针

我正在尝试为Sundials CVODE库编写 CFFI 包装器。SWIG 对日晷标头感到窒息,因为它们相互关联,而 SWIG 找不到合适的标头,所以我手工完成:有点费力,但我已经做到了。

现在我正在尝试测试它是否正常工作。现在,只需简单地创建“问题对象”并删除它。这就是问题开始的地方。因此,“问题对象”是通过函数分配的

我为此创建了包装器:

PS。SUNDIALS_EXPORT(至少在 Unix 上)基本上什么都不是。

现在,为了销毁对象,Sundials 使用了它自己的函数:

所以,我需要将它的引用传递给由CVodeCreate. 在 C 中,如果我的记忆没有问题,我会做类似CVodeFree(&problem_object). 在 CL 中,我为函数编写了这个包装器:

所以,这里COVDE-MEM有一个指向指针的指针。问题是如何获取 CL/CFFI 中指针的指针?这是代码的开头:

(PS。不用担心传递给 的数字CVODECREATE,它们只是告诉使用哪些方法,仍然需要定义常量以使其更具可读性)

所以*P*是这样的

如果我直接将它传递给CVODEFREE,它最终会出错:

我试过传递,(CFFI:POINTER-ADDRESS *P*)但它会导致类似的“总线错误......”(甚至不确定这个函数是否返回我需要的东西)。我也尝试过(CFFI:MAKE-POINTER (CFFI:POINTER-ADDRESS *P*)),再次没有任何成功。

这个问题提出了这种方法:

这有效(至少它不会引发错误)。我想我理解它是如何工作的:它创建(分配内存)一个指向指针的指针P,其MEM-REF(或用 C 术语将是取消引用*p)由 on 的结果填充CVODECREATE。最后,我将这个指向指针的指针传递给CVODEFREE,这正是预期的。P最后,一旦表单完成,分配的内存就会被释放。这是正确的方法吗?它是我唯一可以带走的吗?

0 投票
1 回答
749 浏览

windows - 如何在 Windows 7 64 位上安装 Cffi python 模块?

有没有办法在不使用 MinGW 的情况下在 Windows 7 64 位环境中开始使用 cffi ?需要安装哪些所有软件包?

0 投票
0 回答
212 浏览

python - 如何从 ctypes 对象获取 C 类型定义字符串?

我想要一个可以将 ctypes 对象转换为 cffi 对象的通用函数。它可能如下所示

我认为 ctypes 本身应该具有这种功能,但据我所知它没有。该函数需要与结构、指针和任何通用 c 类型对象一起工作。

有谁知道我正在寻找的功能?或者有什么理由可以解释为什么这种功能没有在 ctypes 中实现?

0 投票
1 回答
209 浏览

common-lisp - Common Lisp & CFFI:修改全局变量

我的目标是修改 C 全局变量。

假设我有以下 C 头文件:

和 C 源文件:

global_variable 正确出现在由生成的共享库中

我的 lisp 界面如下所示:

我可以毫无错误地调用测试,但我不能修改 global_variable

我收到一个警告未定义变量,然后定义(我假设)一个新变量。

所以问题是如何修改 common lisp (sbcl) 中的 global_variable?

先感谢您!