7得票1回答
FFI Haskell回调函数与状态

我的问题是如何编写友好的Haskell接口,以模拟可以从C代码调用的回调。回调在此处进行处理(HaskellWiki),但我认为这个问题比该链接中的示例更复杂。 假设我们有需要回调的C代码,头文件如下: typedef int CallbackType(char* input, char*...

23得票5回答
从C++生成C包装器?

我想从 C++ 库生成 C 包装器。有一些手动操作的教程可以实现这一点: http://dsc.sun.com/solaris/articles/mixing.html http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html ...

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...

14得票2回答
OCaml外部声明中的百分号(%)表示一个占位符,用于指示编译器在生成C代码时应该插入什么内容。

在OCaml标准库中,许多外部声明的函数名以%开头,例如int_of_float的定义:external int_of_float : float -> int = "%intoffloat" '%'代表什么意思?

17得票2回答
如何处理Rust中长时间运行的外部函数调用,例如阻塞I/O?

编辑说明:此问题来自 Rust 1.0 版本之前的版本,使用了在 Rust 1.0 代码中不存在的术语和功能。所表达的概念仍然相关。 我需要在我的 Rust 程序中通过 POSIX 文件描述符读取外部进程提供的数据。文件描述符连接保持了很长时间(几个小时),另一侧不时地向我传递数据。...

15得票2回答
从C FFI调用Rust时如何避免panic,而不需要创建线程

我正在为Duktape JavaScript解释器编写Rust包装器(https://github.com/emk/duktape-rs)。在正常使用情况下,调用堆栈将如下所示: Rust:任意应用程序代码。 Rust:我的库包装器。 C:Duktape解释器。 Rust:我的Rust代码。...

16得票1回答
Haskell C FFI:访问静态数据结构

我有一个关于Haskell C FFI的问题,具体是关于如何访问由C库导出的静态数据结构。 我要包装的C库有像下面的FOO_GEORGE这样的静态数据结构,以以下方式导出:static struct foo_struct foo_table[] = { /* list of foo stru...

12得票2回答
能否使用Haskell创建PHP扩展?

是否可以使用Haskell创建PHP扩展? 通常情况下,PHP扩展是使用C语言编写的。使用Haskell FFI为存根C扩展提供功能是否可行(或甚至是一个好主意)? 这种方法的注意事项有哪些?Zend是否在后台执行某些操作,会破坏这样的方案?

12得票1回答
从Python传递字符串列表到Rust

我已经学习Rust大约两个星期了,今天我开始接触它的FFI。我使用Python来和Rust玩耍,使用ctypes和libc。我传递了整数、字符串,甚至学会了传递整数列表(感谢这个精彩的回答)。 然后,我尝试按照那个回答的推理来传递字符串列表,但我失败了,因为我无法找到头绪。在Python中,...

12得票1回答
在Flutter Windows桌面应用中使用C++ DLL

我有一些用于与FTDI芯片交互的库,已经打包到了一个C++ DLL中。 我想使用Flutter创建一个前端,并在Windows桌面应用程序中使用该库。 这些功能在Flutter中仍然很新,文档非常浅显且仅限于移动设备。 根据这里的指南,我使用FFI创建了一个插件:import 'dart:ff...