问题标签 [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.
c++ - 如何在 Haxe 项目中使用简单的 c++ 代码?
我在 cpp 中有一个类,例如:
在任何 .hx 文件中,我想使用在 cpp 中定义的 Foo 类,如下所示:
预期输出为
作为说明,我搜索并阅读了一些关于hxcpp和Haxe CFFI的文档,但这些文档的某些部分太复杂了。我是 Haxe 的初学者,我需要基本和简单的步骤来解决这个问题。谢谢。
common-lisp - Common Lisp CFFI:将结构值分配给数组索引
如何将外部数组的索引值分配为外部结构的值。例如,以下内容:
我预计大致相当于
相反,它想调用通用函数cffi:translate-into-foreign-memory
。通过这个,有什么办法可以将 SETF 外来内存转换为外来内存?
windows - 如何在 common lisp / cffi 中使用 windows HANDLE 调用本机 c 函数
本机 c 标头:
HANDLE 定义:
我想要的本机c源:
我在 sbcl 1.3.1 中尝试了以下代码,但没有工作。
顺便说一句:如何获得外物(相机)的地址?我做对了吗?
c++ - SWIG [C++ to Lisp(CFFI)] 编译包装器时出错
我是 C++ 和 Lisp 与 SWIG 之间接口的初学者。我已经按照 SWIG 的文档进行操作,但我遇到了问题。这是我想要接口的简单程序(它可以在 Lisp 中轻松完成,但它是为了了解如何将 C++ 代码导入 Lisp):
测试.cpp:
测试.hpp:
为了使用 SWIG,我创建了接口文件:
测试.i:
而且,我执行了以下命令行:
但是在编译 test_wrap.cxx 时,终端会说:
任何人都可以帮助我吗?
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 时,行为是相同的。它挂起,并且没有调试器。
我究竟做错了什么?
我已经测试了其他功能,它们工作正常:
这些是我定义的外国翻译:
这些是我的函数定义:
c++ - SWIG [C++ to LISP(CFFI)] 如何将 C++ 中的数组包装到 CFFI 列表中?
我有一个简单的 C++ 函数,它返回一个 int 数组(作为指针 (int*)),当包装完成时,CFFI 将其视为指针。这是合乎逻辑的,但我想要的是 CFFI 将其视为一个列表。有没有办法在 SWIG 配置中做到这一点?
谢谢您的帮助
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
最后,一旦表单完成,分配的内存就会被释放。这是正确的方法吗?它是我唯一可以带走的吗?
windows - 如何在 Windows 7 64 位上安装 Cffi python 模块?
有没有办法在不使用 MinGW 的情况下在 Windows 7 64 位环境中开始使用 cffi ?需要安装哪些所有软件包?
python - 如何从 ctypes 对象获取 C 类型定义字符串?
我想要一个可以将 ctypes 对象转换为 cffi 对象的通用函数。它可能如下所示
我认为 ctypes 本身应该具有这种功能,但据我所知它没有。该函数需要与结构、指针和任何通用 c 类型对象一起工作。
有谁知道我正在寻找的功能?或者有什么理由可以解释为什么这种功能没有在 ctypes 中实现?
common-lisp - Common Lisp & CFFI:修改全局变量
我的目标是修改 C 全局变量。
假设我有以下 C 头文件:
和 C 源文件:
global_variable 正确出现在由生成的共享库中
我的 lisp 界面如下所示:
我可以毫无错误地调用测试,但我不能修改 global_variable
我收到一个警告未定义变量,然后定义(我假设)一个新变量。
所以问题是如何修改 common lisp (sbcl) 中的 global_variable?
先感谢您!