问题标签 [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.
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 编译?
haskell - 如何专门针对 hsc2hs 类型?
我正在尝试将 SPECIALIZE pragma 用于我通过 hsc2hs 获得的类型#type
。
我试过这样的事情:
该尝试以parse error on input '#'
(在第一个#{type DWORD}
)失败。
我已经提出了一个我发现可行的答案,但我真的希望有一些更干净的东西——或者更准确地说:不会影响整个模块代码的东西。
linux - cabal 交叉编译与 hsc2hs 的 ARM 问题
我正在尝试cabal-install
为 ARM 进行交叉编译。它归结为一一安装必备软件包。我可以通过以下页面配置、构建和安装一些软件包:
直到我到达network
收到此错误的包裹之后./Setup build
:
在此之后,我添加了
切换到我的配置,但这次我遇到了
显然我的arm-unknown-linux-gnueabihf-hsc2hs
工具没有在我的主机上运行。为什么会这样?例如,为什么arm-unknown-linux-gnueabihf-ghc
有效但无效hsc2hs
?最后,是否有安装我的原始network
软件包的解决方法?
haskell - 使用带有 hsc2hs 的堆栈来处理 Haskell 和 C FFI?
我的堆栈项目中有一个file.hsc
通常需要通过hsc2hs file.hsc
.
相反,运行stack build
会导致文件被读取为普通的 haskell 文件,而不进行预处理。
问题:有没有办法同时使用堆栈和hsc2hs
并发?理想情况下,一个人只会运行stack build
,而一切都会“工作”。
c - 使用 hsc2hs 时,在 haskell 源代码中引入 #include 指令会导致许多错误
我正在编写一个 Haskell 程序,它应该知道有关 X11 状态的一些细节,所以我尝试定义一个 FFI 来调用相关的 X11 共享库的符号。我通常按照 wikibook中的说明进行操作。当我添加一个include
引用官方 X11 标头的指令时,hsc2hs
会向我抛出一大堆错误,就好像所述标头在语法上不正确一样。我不得不求助于编写自己的头文件,它基本上复制了上游头文件中我需要的位,并让我的代码编译。
具体来说,我需要_XkbRF_VarDefs
在X11/extensions/XKBrules.h
. 您可以在存储库中查看我的代码:commit 4d77785包含我必须编写以使其编译的标头,而在8d5e76c中 ,您会发现我的最新尝试包含无法编译的官方标头(您可能会看到下面的错误日志) .
是官方标头坏了吗?或者是hsc2hs
吗?是否需要hsc2hs
在我的 make 脚本的调用中添加一些魔术标志才能使用官方标头进行编译?
错误日志:
PS 在评论中,它被指出XKBrules.h
在 Ubuntu 的安装中不存在。我使用 Arch Linux,该文件位于extra/libxkbfile包中,它是gnome-desktop、xorg-setxkbmap和xterm等的依赖项。
haskell - 通过 TemplateHaskell 的 sizeof、offsetof 和对齐
我想知道是否有人通过 实现了hsc2hs
编译指示的类似物TemplateHaskell
?感觉应该是可行的,因为 TH 在编译时在目标平台上运行,而 GHC 总是有一个 C 编译器。作为另一种为 C 结构生成 haskell 包装器并为它们派生东西的方法,这可能很有用。
问题是:如果有这样的图书馆,请指出我。否则,如果我错过了什么,请告诉我这是不可能的或没有意义的。
haskell - 将 hsc2hs 与 HPack 和 Stack 一起使用
我想通过 Stack 和 HPack 使用 hsc2hs。问题是,由于 HPack 不允许我将.hsc
文件列为源文件,.hs
因此对文件的更改.hsc
不会触发stack build
.
我的package.yaml
文件如下:
使用上述文件,初始成功(包括从stack build
构建),但是,如果更改,后续调用不会执行任何操作。sim-ffi.hs
sim-ffi.hsc
stack build
sim-ffi.hsc
如果我尝试将main
键的值从sim-ffi.hs
to更改sim-ffi.hsc
,我会被明确告知:
haskell - 在这个 hsc2hs 的 #let 构造中重复参数的目的是什么?
在下面的代码中,它看起来numarray
只需要一个参数,所以我不确定重复#t
的用途是什么,但是当并非所有参数都存在时,它会导致 hsc2hs 异常退出: