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

java - 使用 JNA 检测 AppData\LocalLow 的位置

我正在尝试AppData\LocalLow在 Windows 7 上使用 JNA 检测 Java 的工作位置。但可用于该工作的最接近的功能是:

这里我们有C# 中的解决方案

但就我而言,JAVA + JNA,我想知道如何只使用LocalLow GUIDwith SHGetFolderPath,或者我应该从不同的角度看待问题(也许 JNI 在这里会更好?)

如果有人可以帮忙,谢谢

干杯

编辑:好的,现在我添加了 SHGetKnownFolderPath,但是在这里,它不断返回我这样的字符串“?f”

}

0 投票
4 回答
1105 浏览

haskell - Haskell FFI 对具有可变参数的函数的支持

任何人都可以向我展示一个使用带有可变参数(例如printf)的 C 函数和 Haskell 的外部函数接口的示例吗?我尝试搜索 HaskellWiki,但没有找到这样的示例。

谢谢!

0 投票
2 回答
3557 浏览

haskell - hsc2hs 和 c2hs 的区别?

hsc2hs 和 c2hs 有什么区别?

我知道什么是 hsc2hs 是一个预处理器,但它到底是做什么的?

c2hs 可以用 C 代码制作 Haskell 模块,但是我需要 hsc2hs 吗?

0 投票
4 回答
1799 浏览

c - 从 OCaml 获取 C 二进制数据

(为了争论而忽略字节顺序——这只是一个测试用例/概念证明——我也永远不会strcpy在实际代码中使用!)

考虑以下简单的 C 代码:

它写入的文件可以很容易地从磁盘读回:

例如

我的问题是,在 OCaml 中,如果我只有:

我将如何获得这些数据?Marshal做不到,也做不到input_binary_int。例如,我可以调用 C 中的辅助函数,例如“what is sizeof(int)”,然后获取 n 个字节并调用 C 函数以“将这些字节转换为 int”,但在这种情况下,我无法添加任何新的 C 代码,即“解包”必须在 OCaml 中完成,基于我所知道的“应该”。是否只是在sizeofs 块中迭代字符串或寻找 '\0' 还是有一个聪明的方法?谢谢!

0 投票
2 回答
1001 浏览

php - 是否可以在 Haskell 中创建 PHP 扩展?

是否可以使用 Haskell 创建 PHP 扩展?

通常 PHP 扩展是使用 C 编写的。是否使用 Haskell FFI 为存根 C 扩展提供功能(甚至是一个好主意)?

这种方法有什么注意事项?Zend 是否会在后台执行一些魔法来破坏这样的计划?

0 投票
2 回答
2278 浏览

haskell - 如何使用 hsc2hs 绑定常量、函数和数据结构?

我需要一个如何使用 hsc2hs 的例子,我想当我写一个头文件时:

然后创建一个 hsc 文件,如:

使用hsc2hs

我不明白,我认为 hsc2hs 会为我导入所有需要的东西,比如PI

谁能给我一个更好的例子?

0 投票
2 回答
495 浏览

haskell - 无法安装网络包

我已经安装了网络包。当我尝试重新安装它时(例如,用于 cabal-dev),它不会编译。如果我cabal unpack network然后尝试构建它,我会得到下面的输出。我猜这是因为我升级了一个 Ubuntu 依赖项。我升级到了 Ubuntu 11.04,希望它会有所帮助;它没有。还安装了 libghc6-network-dev 以防万一可以正确链接;它没有。我在 ghc-7.0.2 上,也刚刚尝试过 ghc-7.0.3。目前正在尝试从源代码安装最新的 haskell 平台......任何帮助表示赞赏 - 这完全扼杀了我的 haskell 黑客攻击!

命令是:



这是我的 gcc 版本:

0 投票
4 回答
6791 浏览

python - 从python调用prolog谓词

我有一些.pl文件,我想从 python 脚本调用在其中声明的谓词。我怎样才能做到这一点?

例如,test.pl

像这样工作

我想以rD某种方式从 python 脚本调用并在结果变量中得到答案

ps:这只是一个例子,我不想重写我现在的Prolog程序。

0 投票
3 回答
1261 浏览

c++ - 将 Haskell ByteStrings 转换为 C++ std::string

我想将严格ByteStrings从 Haskell 转换为 C++ ,以通过FFIstd::string将其传递给 C++ 库。由于可能包含字符,因此转换为 a作为中间步骤是不可行的。这里的正确方法是什么?ByteStringNULLCString

当前解决方案

感谢您到目前为止的答案。我希望该任务有一个规范的解决方案,但也许它还不存在:)

一些c++ 库文档说明如下:

字符串 ( const char * s, size_t n );

内容被初始化为由 s 指向的字符数组中的前 n 个字符组成的字符串的副本。

因此,可以编写这样一个函数,它从 ByteString 复制一次以构造 std::string

随之而来的 C++ 代码toCCString_看起来就像 Neil 和 Alan 指出的那样。

0 投票
1 回答
938 浏览

haskell - Using the Haskell FFI to marshal structs; also, how to use FunPtr

I have some questions about the ffi in haskell.

first of all i'm trying to work with c structs in haskell.

there i have some questions: i have a struct like

  1. when could i use data Foo = Foo { a :: Int, b :: Float } deriving (Show, Eq)
  2. when i have to implement a storable with peek and poke?

okay now a question about FunPtr

  • i dont know when to use FunPtr why a normal definition like Ptr CInt -> IO CInt is not enough?