问题标签 [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 投票
2 回答
291 浏览

haskell - 导入 GHCI 时,已编译的带有 FFI 导入的 Haskell 库无效

我在 Ubuntu 10.04 中使用 GHC 6.12.1

当我尝试使用 FFI 语法进行静态存储时,只有以解释模式(即 GHCI)运行的模块才能正常工作。编译的模块有无效的指针,并且不工作。我想知道是否有人可以重现该问题,这是否是我的代码或 GHC 中的错误,以及(如果是后者)是否是已知问题。

我正在使用sys_siglist它,因为它存在于我系统上的标准库中,但我不相信实际使用的存储很重要(我在编写与 libidn 的绑定时发现了这一点)。如果有帮助,sys_siglist定义<signal.h>为:

我认为这种类型可能是问题所在,所以我也尝试将它包装在一个普通的 C 过程中:

但是,导入不会改变结果,并且printf()调用会打印与show siglist_a.

我怀疑这与静态和动态库加载有关。

更新:#haskell 中有人建议这可能是 64 位特定的;如果有人试图复制它,您能否在评论中提及您的架构以及它是否有效?

代码如下:

--

--

我希望得到类似这样的输出,其中所有指针值都相同且有效:

但是,如果我编译 A.hs(带有ghc -c A.hs),则输出将更改为:

0 投票
3 回答
2009 浏览

ocaml - 使用它编译C lib和OCaml exe,全部使用ocamlfind

我正在尝试研究如何使用ocamlfind该 C 库编译 C 库和 OCaml 可执行文件。

我整理了一组相当愚蠢的示例文件。

我相信以下是编译库的方法:

现在我似乎无法使用创建的库:

OCaml 工具对我来说有点神秘,所以任何指针都会受到欢迎。

0 投票
3 回答
370 浏览

c - 在 Racket 中,我可以在调用另一个函数后导出函数吗?

我正在尝试使用方案的 FFI 创建与 libpython 的绑定。为此,我必须获取 python 的位置,创建ffi-lib,然后从中创建函数。所以例如我可以这样做:

这一切都很好,但我想不出导出函数的方法。例如,我可以这样做:

...但是我必须以某种方式全局存储对 libpython (由 link-python 创建)的引用。调用 link-python 后,有什么方法可以导出这些函数吗?换句话说,我希望使用该模块的人能够做到这一点:

...或这个:

...但是这会给出一个错误:

我怎样才能做到这一点?

0 投票
1 回答
587 浏览

jruby - Jruby 和 ffi:在 [libexslt.so] 中找不到函数“xmlFirstElementChild”

在 ubuntu 服务器上,安装了所有东西(检查了另一台工作正常的电脑)当试图在我的一个 jruby 项目上运行 warble 时,我收到这个错误:

所有图书馆和所需的宝石似乎都在那里。谷歌没有帮助,奇怪的是在其他电脑上这工作正常......

达尼洛

0 投票
3 回答
845 浏览

perl - 使用 Haskell 扩展 Perl?

有没有人为 Perl 写过 Haskell 扩展?也许是一些简单的东西,比如计算 fib 的函数。序列?我对使用 Haskell 很感兴趣,并且我看到 Haskell 和 Perl 社区之间存在一些重叠。任何指向 Haskell / Perl 项目的指针,或设法使用这两者的酷东西?我见过Language::Haskell - 它只是一个解释器 - 但它似乎记录得很差,6 岁了,而且很多 fail

是否可以使用与使用 XS 相当的 ghci 对 Perl 进行扩展(我不声称对此一无所知)?我意识到这个问题可能是各种错误的,而且措辞也很糟糕。我正在尝试两件我知之甚少的事情——Haskell 和扩展 Perl(它们一直都让我感兴趣)。随意编辑这个。

0 投票
1 回答
1022 浏览

haskell - 在 Haskell 中自动转换 FFI 调用的类型

我定义了以下模块来帮助我进行 FFI 函数导出:

我正在为函数的实例而苦苦挣扎。有人能帮我吗?

0 投票
4 回答
13792 浏览

c++ - 混合 Haskell 和 C++

如果您有可能拥有一个同时使用 Haskell 和 C++ 的应用程序。你会让 Haskell 管理哪些层,让 C++ 管理哪些层?

有没有人做过这样的关联,(肯定)?

(Haskell 网站告诉它真的很容易,因为 Haskell 有一种模式,它可以通过 gcc 在 C 中编译)

起初我认为我会将所有 I/O 操作保留在 C++ 层中。以及 GUI 管理。

这是一个非常模糊的问题,但是当我计划学习 Haskell 时,我正在考虑将一些工作委派给 Haskell 代码(我在实际编码中学习),并且我想选择一些我会看到 Haskell 好处的部分。

0 投票
2 回答
359 浏览

ruby - ruby 中 ffi 和 mric 扩展之间的权衡是什么?

ruby 中 ffi 和 mric 扩展之间的权衡是什么?

0 投票
2 回答
717 浏览

java - 最快的双向 java prolog 实现

我正在尝试在当前基于代理的模拟之上使用 java-prolog 层。我正在运行 Mac OS X Snow Leopard 和 Netbeans 6.9,并尝试使用 swi-prolog 中的 JPL,但是由于库及其路径存在问题,我未能成功运行测试。我需要一个非常快速的实现,我想知道是否有人对双向 java-prolog 接口有任何基准或个人经验。

0 投票
5 回答
15543 浏览

c++ - 从 C++ 代码调用 Haskell

我目前正在用 C++ 编写一个应用程序,发现它的某些功能最好用 Haskell 编写。我已经看到了从 C 代码调用 Haskell 的说明,但是是否可以用 C++ 做同样的事情?

编辑:澄清一下,我正在寻找一种将 Haskell 代码编译成外部库的方法,g++ 可以与 C++ 中的目标代码链接。

更新:我在下面为其他感兴趣的人提供了一个工作示例(也是为了不会忘记)。