问题标签 [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 回答
4325 浏览

c - LuaJIT FFI 有多难?

我最近研究了 Lua,它看起来真的很不错。唯一令人讨厌的是它缺乏(标准)库。但是 JIT 编译器附带了一个不错的 FFI C 接口。

来自 java 背景,我尽量避免使用 C,所以我的问题是:有没有人对 LuaJIT 有一些经验,尤其是它的 FFI 接口,以及为几乎没有知识的人建立一个库有多困难C?

0 投票
1 回答
671 浏览

xcode - 如何使用 Xcode LLVM 编译器编译和使用 Haskell 作为 C 库?

我想建立一个项目来获取我的 .hs 代码和我的主 .c 程序,并通过使用 LLVM 编译器生成一个静态链接的可执行文件。我可以通过 ghc 命令行选项来构建 .hs,生成存根,并完全使用 ghc 编译和链接驱动程序应用程序。但是,我在 Xcode 中遇到了各种问题。

我的第一个问题是我当然需要在 Xcode 中使用 32 位编译环境。解决了,我不得不摆弄明确包含 HsFFI.h 的路径。解决了,我得到一个链接器错误:

“simpleFunction”在我使用 ghc 编译的“ForeignExportCost.a”库中,如下所示:

我错过了什么或做错了什么?

0 投票
1 回答
344 浏览

pointers - Haskell 的 Foreign.C 等效于 C 的 & 运算符 (&)

如您所知,对于identC 中的任何标识符,您都可以编写&ident以获取指向 的内存位置(指针)ident,而不管该位置是在堆上还是在堆栈上。在使用 C 类型时,访问此功能通常很有帮助。

FFI 中的 Haskell 中是否有等效的操作?

0 投票
1 回答
725 浏览

c - 如何在 C 和 gprolog 之间进行接口?

我在接口 C 和 Prolog 代码方面有点不幸。我们在 C 中有一些数据收集代码,在 Gnu-Prolog 中有一些分析代码。那么接口 C 和 gprolog 的最佳方法是什么?我目前正在尝试使用 gprolog 包中包含的 C 库从 C 中调用 Prolog。

注意:我正在使用 ubuntu 机器。

我面临的问题之一是如何迭代列表。我终于意识到,虽然你可以从 n 个元素中创建一个列表,但你必须以 Prolog 的方式对其进行迭代——获取头部并获取尾部并递归。

0 投票
1 回答
1361 浏览

linux - 未找到 FFI 错误模块

我正在使用 Ubuntu 64 位和 Pharo 1.2.1

我编写了一些从 glibc 访问 crypt(3) 的 FFI 代码。我想将其更改为从我使用 apt-get 安装的 libxcrypt 访问 crypt。当我改变方法时:

到:

我收到未找到外部模块错误。我已经从我的图像所在的目录链接到 libxcrypt.so.1 文件。

我怀疑它可能是 64 位与 32 位库的东西,或者我需要将库链接到其他地方但不知道。

我可以检查哪些步骤或事情来尝试找出无法找到外部模块的原因?

0 投票
2 回答
32348 浏览

python - Passing Numpy arrays to a C function for input and output

Oh my word I'm a fool. I was simply omitting the second and third arguments when calling the function. Like a fool. Because that's what I am. Original silly question follows:

This seems like it must be a very common thing to do, but I can't find a relevant tutorial, and I'm too ignorant about Numpy and ctypes to figure it out myself.

I have a C function in file ctest.c.

(As you may guess, I originally had the arguments as double * rather than void *, but couldn't figure out what to do on the Python side. I'd certainly love to change them back, but I'm not picky as long as it works.)

I make a shared library out of it. gcc -fPIC -shared -o ctest.so ctest.c

Then in Python, I have a couple numpy arrays, and I'd like to pass them to the C function, one as input and one as output.

This doesn't report any errors, but prints out

The outdata array is not modified. And in fact if I call the function again I get a segfault. Which doesn't surprise me -- I really don't know what I'm doing here. Can anyone point me in the right direction?

0 投票
2 回答
2171 浏览

haskell - Haskell 中的 FFI,关于 LANGUAGE CPP 以及如何将 ac struct 与 FFI 一起使用的问题

我对 Haskell 中的 FFI 有一些疑问

  1. 我知道我必须使用语言编译指示,但是当我使用CPP 可以“更多”做什么时有什么{-# LANGUAGE ForeignFunctionInterface #-}区别{-# LANGUAGE CPP, ForeignFunctionInterface #-}
  2. 我在 c 中使用了一个使用 a 的函数,struct我该如何在 FFI 中处理这个?
  3. 我什么时候必须用CInt,什么时候才用Int
0 投票
3 回答
8701 浏览

c - 嵌入时如何使用LuaJIT的ffi模块?

我正在尝试将 LuaJIT 嵌入到 C 应用程序中。代码是这样的:

Lua 代码是这样的:

它报告如下错误:

我四处搜索,发现 ffi 模块上的文档很少。非常感谢。

0 投票
1 回答
255 浏览

ruby - 跨平台 Ruby FFI 库

我正在为谷歌的 cityhash 库(c++)编写 FFI ruby​​ 包装器。那么,让它跨平台(linux、windows、macos)的最佳方法是什么?我需要在 gem 安装期间将谷歌的库编译到共享库吗?还是只编译一次并与 gem 一起发布?

0 投票
1 回答
278 浏览

scheme - 如何从(MIT)方案调用本机代码?

如何MessageBox从 Scheme 中调用本机函数(例如 )?