37得票1回答
使用c_void在FFI中工作

我正在努力通过一个接受void参数的FFI传递结构体,并在另一端读取它。所涉及的库是libtsm,一个终端状态机。它允许您提供输入,然后找出输入后终端处于哪个状态。它声明了其绘制函数为:pub fn tsm_screen_draw(con: *tsm_screen, draw_cb: tsm_...

36得票6回答
使用Python调用Haskell函数

我想从Python中使用一些Haskell库(例如Darcs,Pandoc),但是似乎Python没有直接与Haskell进行外部函数接口的方法。有没有什么办法可以实现这个功能呢?

32得票2回答
如何将 Rust 的 `Vec<T>` 暴露给 FFI?

我正尝试构建一对元素: array: *mut T array_len: usize array 旨在拥有数据。 然而,Box::into_raw 将返回 *mut [T]。我找不到任何关于将裸指针转换为切片的信息。它在内存中的布局是什么?我如何从 C 中使用它?是否应该转换为 *m...

32得票3回答
Rails - 类型错误:无法解析类型 'size_t'(Big Sur-M1)

我有一个关于在新的mac上安装新的rails应用程序的问题,我真的需要快速解决它。我已经解决了所有与gem相关的问题,bundle update也正常,但我无法运行rails s。我认为这是由于M1的原因,但我找不到任何可以解决我的问题的帖子。 当我在终端中运行rails s时: 100:...

32得票17回答
错误: 安装ffi时出错:错误: 无法构建本地宝石扩展。

我已安装了DevKit并重新运行了ffi安装程序...得到以下输出:C:\Documents and Settings\******&gt;gem install ffi Temporarily enhancing PATH to include DevKit... Building nati...

32得票3回答
如何将Rust闭包转换为C风格的回调函数?

我正在尝试为一个 C API 写一个 Rust 的包装器。有一个 C 的结构我很难理解: typedef bool (*listener_t) (int, int); bool do_it(int x1, int y1, int x2, int y2, listener_t listener...

31得票2回答
Haskell FFI 进行 C 语言互操作的成本是多少?

如果我想调用多个C函数,每个函数都依赖于前一个函数的结果,那么创建一个包装器C函数来处理这三个调用是否更好?与使用Haskell FFI而不转换类型相比,它会花费相同的代价吗? 假设我有以下Haskell代码:foo :: CInt -&gt; IO CInt foo x = do a ...

31得票1回答
使用bindgen设置包含路径

我正在编写一个 Rust 接口,连接到 一个小型的 C 库,该库的头文件分散在几个位置。这不是一个系统库,通常由同一软件包中的某些可执行文件使用。我目前将其作为 git 子模块包含在我的 Cargo 项目中。 构建库似乎相当容易;我选择在 build.rs 中使用 gcc crate:gcc...

30得票2回答
清晰的 ctypes 类结构方式

我定义了一个ctypes类和一个相关的便捷函数,代码如下:class BNG_FFITuple(Structure): _fields_ = [("a", c_uint32), ("b", c_uint32)] class BNG_FFIArray(...

29得票1回答
如何在Swift代码中最佳地使用Rust库?

我希望能够在Swift中使用Rust对象,当Rust对象改变或事件发生时,以某种方式通知Swift,并利用Swift的ARC来保持Rust对象的生命周期。 目前我所想到的是为Rust对象编写一个简单的C API,然后编写一个Objective-C包装器来封装C API,最后将其导出到Swif...