问题标签 [ffi]

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 回答
1298 浏览

c++ - 使用 ffi 将 c++ 数据类型导入到 haskell

我正在为 c++ 库编写一个 haskell 包装器,尽管我可以将函数从库中导入到我的 haskell 程序中,但我不知道如何导入 c++ 数据类型。例如,我有一个函数,它将在 some.h 文件中定义的 video::E_DRIVER_TYPE EDT_OPENGL 类型作为参数,正如我之前所说,我知道如何使用 ffi 导入函数

国外进口电话...

具有适当的编译器损坏的函数名称

但我无法从haskell 调用该函数,因为我不知道如何导入/使用这个特定的视频驱动程序数据类型。

现在,我知道您可以在 Haskell 中创建类型,但我仍然需要一个起点来确定将类型定义为 C++ 表示形式是什么。(此时我很困惑)

我将不胜感激任何帮助!谢谢

0 投票
1 回答
209 浏览

scheme - 使用 PltScheme FFI 中的 _bitmask

这是 plt-scheme 包装库的一部分:

问题是我无法弄清楚如何访问位掩码(或枚举)中的字段。例如,如何获取 KeyPressMask 值?

0 投票
2 回答
874 浏览

external - OCaml 外部声明中的 % 是什么意思?

OCaml 标准库中的许多external声明在函数名的开头都有一个 %,例如 的定义int_of_float

'%' 是什么意思?

0 投票
1 回答
688 浏览

c++ - 在 haskell 的 FFI 后面使用 stdout/stderr/stdin 流

我正在开发一个使用我用 C++ 开发的外部静态库的小型 haskell 程序。它通过 ghc 的 FFI(外部函数接口)访问 lib。在这个库中,我想对控制台做一些输出。但是,在我看来,事情的 c++ 方面没有正确的标准输出句柄,因为输出没有出现在控制台上。那么,我的问题是:

  • ghc 会劫持这三个流(stdout、stdin、stderr)还是 libstdc++ 只是因为我与 ghc 链接而没有初始化它们?
  • 如果它们写入标准输出,我的 FFI 导入是否需要“安全”?
  • 如何将标准输出传递给 C 函数?我应该直接传递它还是需要一个 C 类型?

附加说明:我将 libstdc++ 直接链接到可执行文件(即 ghc -lstdc++ ...),我天真地认为这是正确的做法。似乎运作良好

免责声明:对 Haskell 来说还是很新的,所以现在是婴儿步骤;P

0 投票
3 回答
1740 浏览

haskell - 如何在haskell中“解包”结构

我最近遇到了这个问题并找到了解决方案,但我想知道是否有更好的(或者只是更惯用的)解决方案。

我有一个颜色的结构:

还有一个函数我想将颜色分量单独传递给,实际上来自开罗:

所以我需要以某种方式“解包”这个数据结构,因为setSourceRGB不需要Rgb. 我找到了两种方法。一种是定义一个函数来应用 a 的内容Rgb

然后我可以这样做:

我想出的另一种方法是使用 case 执行内联 lambda 表达式,这意味着我不必定义单独的函数:

然而,我对此并不完全满意,以某种方式应用一个函数来传递一些值似乎并不正确。我希望能够把它转过来,Rgb并将setSourceRGB. 不幸的是,在我看来这是不可能的功能

可以传递给setSourceRGB. 也许applyRgb是最好的解决方案,但我想知道是否有更好的方法可以让我将其表达为:

0 投票
2 回答
1830 浏览

c++ - 具有不错的 C++ FFI 的可破解方案实现

我尝试过:scheme48、chicken、gambit、clojure。

我正在寻找一个可读的方案实现(实现本身),并且具有不错的 C++ ffi 和良好的调试支持(所以当我遇到异常时,我应该进入递归 repl)。

人们有什么建议?

0 投票
3 回答
8145 浏览

java - 从 Java 中调用 Haskell 函数的最佳方式

我正在寻找一种从 Java 程序中执行 Haskell 函数的有效方法。我考虑过使用 exec() 与 GHC 交互,但似乎应该有更好的方法。

0 投票
1 回答
496 浏览

erlang - erlang“erl_nif”功能

我主要通过端口驱动程序来连接 Erlang,但现在随着erl_nif 功能的出现,我想知道我是否应该再投资端口驱动程序。

功能会erl_nif繁荣还是萧条FFI

0 投票
2 回答
1199 浏览

ruby - 迭代 Ruby FFI 结构布局

我正在使用非常棒的ruby​​ ffi库来访问 ruby​​ 中 ac 库中的函数。

有没有办法迭代 Ruby FFI::Struct 的布局?

示例 FFI::结构:

这似乎不起作用,但类似于下面的伪代码:

0 投票
2 回答
12562 浏览

c - 如何使用“外部函数接口”从 Go 调用 C

如何使用 Go 的“外部函数接口”调用 C 函数?

FAQ中提到了这个接口,但我在文档的其他地方看不到它。