问题标签 [hsc2hs]

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 投票
0 回答
325 浏览

c++ - hsc2hs c++ 头文件

我正在尝试针对某些 C++ 源构建带有 FFI 的 Haskell 可执行文件。

我有一个像这样的 C 头文件(cstuff/foo.h):

foo 的实现应该无关紧要。它会做一些事情并使用 somecppheader.h 中声明的东西。

Cabal 文件中的可执行部分如下所示:

Main.hsc 看起来像这样:

在这个例子中实际上不需要 hsc2hs,它只是用来触发我试图描述的错误。

问题是 somecppheader.h 是具有 C++ 特定构造的 C++ 头文件,而 foo.h 的包含似乎将其编译为 C 头文件,但由于 C++ 构造(如类定义)而失败。

我如何告诉 hsc2hs 或 Cabal foo.h 需要用 g++ 而不是 gcc 编译?

0 投票
1 回答
42 浏览

haskell - 如何专门针对 hsc2hs 类型?

我正在尝试将 SPECIALIZE pragma 用于我通过 hsc2hs 获得的类型#type

我试过这样的事情:

该尝试以parse error on input '#'(在第一个#{type DWORD})失败。

我已经提出了一个我发现可行的答案,但我真的希望有一些更干净的东西——或者更准确地说:不会影响整个模块代码的东西。

0 投票
0 回答
161 浏览

linux - cabal 交叉编译与 hsc2hs 的 ARM 问题

我正在尝试cabal-install为 ARM 进行交叉编译。它归结为一一安装必备软件包。我可以通过以下页面配置、构建和安装一些软件包:

交叉编译haskell代码时如何安装依赖项?

直到我到达network收到此错误的包裹之后./Setup build

在此之后,我添加了

切换到我的配置,但这次我遇到了

显然我的arm-unknown-linux-gnueabihf-hsc2hs工具没有在我的主机上运行。为什么会这样?例如,为什么arm-unknown-linux-gnueabihf-ghc有效但无效hsc2hs?最后,是否有安装我的原始network软件包的解决方法?

0 投票
0 回答
437 浏览

haskell - 使用带有 hsc2hs 的堆栈来处理 Haskell 和 C FFI?

我的堆栈项目中有一个file.hsc通常需要通过hsc2hs file.hsc.

相反,运行stack build会导致文件被读取为普通的 haskell 文件,而不进行预处理。

问题:有没有办法同时使用堆栈和hsc2hs并发?理想情况下,一个人只会运行stack build,而一切都会“工作”。

0 投票
1 回答
157 浏览

c - 使用 hsc2hs 时,在 haskell 源代码中引入 #include 指令会导致许多错误

我正在编写一个 Haskell 程序,它应该知道有关 X11 状态的一些细节,所以我尝试定义一个 FFI 来调用相关的 X11 共享库的符号。我通常按​​照 wikibook中的说明进行操作。当我添加一个include引用官方 X11 标头的指令时,hsc2hs会向我抛出一大堆错误,就好像所述标头在语法上不正确一样。我不得不求助于编写自己的头文件,它基本上复制了上游头文件中我需要的位,并让我的代码编译。

具体来说,我需要_XkbRF_VarDefsX11/extensions/XKBrules.h. 您可以在存储库中查看我的代码:commit 4d77785包含我必须编写以使其编译的标头,而在8d5e76c中 ,您会发现我的最新尝试包含无法编译的官方标头(您可能会看到下面的错误日志) .

是官方标头坏了吗?或者是hsc2hs吗?是否需要hsc2hs在我的 make 脚本的调用中添加一些魔术标志才能使用官方标头进行编译?

错误日志:

PS 在评论中,它被指出XKBrules.h在 Ubuntu 的安装中不存在。我使用 Arch Linux,该文件位于extra/libxkbfile包中,它是gnome-desktopxorg-setxkbmapxterm等的依赖项。

0 投票
0 回答
80 浏览

haskell - 通过 TemplateHaskell 的 sizeof、offsetof 和对齐

我想知道是否有人通过 实现了hsc2hs编译指示的类似物TemplateHaskell?感觉应该是可行的,因为 TH 在编译时在目标平台上运行,而 GHC 总是有一个 C 编译器。作为另一种为 C 结构生成 haskell 包装器并为它们派生东西的方法,这可能很有用。

问题是:如果有这样的图书馆,请指出我。否则,如果我错过了什么,请告诉我这是不可能的或没有意义的。

0 投票
0 回答
101 浏览

haskell - 将 hsc2hs 与 HPack 和 Stack 一起使用

我想通过 Stack 和 HPack 使用 hsc2hs。问题是,由于 HPack 不允许我将.hsc文件列为源文件,.hs因此对文件的更改.hsc不会触发stack build.

我的package.yaml文件如下:

使用上述文件,初始成功(包括从stack build构建),但是,如果更改,后续调用不会执行任何操作。sim-ffi.hssim-ffi.hscstack buildsim-ffi.hsc

如果我尝试将main键的值从sim-ffi.hsto更改sim-ffi.hsc,我会被明确告知:

0 投票
1 回答
76 浏览

haskell - Haskell 预处理器中的 % 是什么,它与 Uint8 之类的类型(如果有的话)有什么关系?

我想更好地理解以下代码

的实例MDouble包含在片段中以演示不使用预处理器的示例。

但特别是,看起来他们正在使用诸如Uint8etc. 之类的某些类型,我不确定这些是在哪里定义的,或者为什么Word8不使用 eg 来代替。另外,不确定如何%s使用。#我在hsc2hs 文档中看到很多参考资料,但到目前为止还没有关于%.

0 投票
1 回答
57 浏览

haskell - 在这个 hsc2hs 的 #let 构造中重复参数的目的是什么?

在下面的代码中,它看起来numarray只需要一个参数,所以我不确定重复#t的用途是什么,但是当并非所有参数都存在时,它会导致 hsc2hs 异常退出: