我正在努力通过一个接受void参数的FFI传递结构体,并在另一端读取它。所涉及的库是libtsm,一个终端状态机。它允许您提供输入,然后找出输入后终端处于哪个状态。它声明了其绘制函数为:pub fn tsm_screen_draw(con: *tsm_screen, draw_cb: tsm_...
我想从Python中使用一些Haskell库(例如Darcs,Pandoc),但是似乎Python没有直接与Haskell进行外部函数接口的方法。有没有什么办法可以实现这个功能呢?
我正尝试构建一对元素: array: *mut T array_len: usize array 旨在拥有数据。 然而,Box::into_raw 将返回 *mut [T]。我找不到任何关于将裸指针转换为切片的信息。它在内存中的布局是什么?我如何从 C 中使用它?是否应该转换为 *m...
我有一个关于在新的mac上安装新的rails应用程序的问题,我真的需要快速解决它。我已经解决了所有与gem相关的问题,bundle update也正常,但我无法运行rails s。我认为这是由于M1的原因,但我找不到任何可以解决我的问题的帖子。 当我在终端中运行rails s时: 100:...
我已安装了DevKit并重新运行了ffi安装程序...得到以下输出:C:\Documents and Settings\******>gem install ffi Temporarily enhancing PATH to include DevKit... Building nati...
我正在尝试为一个 C API 写一个 Rust 的包装器。有一个 C 的结构我很难理解: typedef bool (*listener_t) (int, int); bool do_it(int x1, int y1, int x2, int y2, listener_t listener...
如果我想调用多个C函数,每个函数都依赖于前一个函数的结果,那么创建一个包装器C函数来处理这三个调用是否更好?与使用Haskell FFI而不转换类型相比,它会花费相同的代价吗? 假设我有以下Haskell代码:foo :: CInt -> IO CInt foo x = do a ...
我正在编写一个 Rust 接口,连接到 一个小型的 C 库,该库的头文件分散在几个位置。这不是一个系统库,通常由同一软件包中的某些可执行文件使用。我目前将其作为 git 子模块包含在我的 Cargo 项目中。 构建库似乎相当容易;我选择在 build.rs 中使用 gcc crate:gcc...
我定义了一个ctypes类和一个相关的便捷函数,代码如下:class BNG_FFITuple(Structure): _fields_ = [("a", c_uint32), ("b", c_uint32)] class BNG_FFIArray(...
我希望能够在Swift中使用Rust对象,当Rust对象改变或事件发生时,以某种方式通知Swift,并利用Swift的ARC来保持Rust对象的生命周期。 目前我所想到的是为Rust对象编写一个简单的C API,然后编写一个Objective-C包装器来封装C API,最后将其导出到Swif...