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

haskell - Haskell:如何获取#define-d 常量的值?

在 Haskell 程序中,使用 C 头文件中定义的常量的最佳方法是什么?

0 投票
1 回答
1409 浏览

haskell - Haskell 阴谋集团+hsc2hs

cabal 可以使用 hsc2hs 创建 hs 文件吗?如何?

我在手册、谷歌搜索和其他项目中都没有找到答案(我对 gtk2hs 寄予厚望,但事实证明它不使用 cabal)

0 投票
2 回答
3557 浏览

haskell - hsc2hs 和 c2hs 的区别?

hsc2hs 和 c2hs 有什么区别?

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

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

0 投票
2 回答
2278 浏览

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

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

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

使用hsc2hs

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

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

0 投票
1 回答
633 浏览

c - 如何分配和重用 Haskell 中的 C 结构?

特别是,我正在尝试通过编写与 Allegro 游戏库的绑定来学习 Haskell 的外部函数接口。在 Allegro 的原生 C 中,主事件循环如下所示:

使用 ghc 和 hsc2hs,我可以编写一个外部函数调用,例如:

whereEventQueue是指向不透明结构的指针,并且EventStorable基于 C 的实例ALLEGRO_EVENT

理想情况下,对于面向用户的 Haskell 函数,我希望有一个类型签名,例如

这将抽象出初始化ALLEGRO_EVENT结构和布尔返回值。

我的问题是,我应该如何编写这个函数来最大化内存效率?我可以Event在方法内部分配一个新指针并使用它,但由于我正在处理基于 C 的数据,我想确保我正在重新使用现有空间而不是不断分配新结构。我还想避免让用户 malloc 结构并将其传递给每个调用。

有什么建议吗?

0 投票
1 回答
320 浏览

winapi - 在 Windows 上使用 Haskell 模拟击键

我正在尝试编写一个在 Windows 上模拟击键的 Haskell 程序。我尝试调用 keybd_event 和 SendInput,但都没有编译。不过,我可以使用解释器运行程序。当我在 winable.h 中包含与 SendInput 的绑定时尝试构建程序时,我收到错误消息:

详细错误位于http://pastebin.com/trg21N0x,但似乎不再包含任何线索。当我尝试使用keybd_event. 我写的 hsc 文件包括这些头文件:

这是C绑定:

我认为由于 #if ,我无法调用SendInputwinuser.h :

当我添加绑定时_WIN32_WINNT,值为 0x400。

我有 Haskell 平台的 2012.4.0.0 版本。它带有一个标题文件夹,其中包含我包含的标题。我在我的计算机上找不到任何其他具有相同名称的标题。我正在使用 Windows 7 Professional 6.1 版。

谢谢!

这是 WindowsKeys.cabal :

当我注释掉与键盘功能的绑定时,构建成功。

0 投票
1 回答
101 浏览

haskell - 使用 hsc2hs 与 XKB API 交互

我正在尝试访问XKB API中的各种位和鲍勃。到目前为止,这是我的测试代码:

虽然 (1) 输出0x0000000001777d80,这听起来像是一个有效的地址,但 (2) 发出XkbDescRec {names = 0x0000000000000000}

我不知道我是否以错误的方式使用了 FFI,或者我是否误解了链接中详述的 XkbDescRec 结构的结构。

0 投票
1 回答
269 浏览

haskell - 通过 c2hsc 和 hsc2hs 在 Haskell 中连接 C 联合

虽然使用c2hschsc2hs为我节省了大量工作,但在尝试为 C 联合创建绑定时遇到了一些麻烦。


例如,给定 C 结构

c2hsc为我创建以下代码:

其中v字段生成为空。通过hsc2hs产生不正确的工具链


现在的问题是

  1. .hsc手动编写代码以便我可以使用绑定的正确方法是什么?
  2. 有没有办法让我c2hsc自动做到这一点?
0 投票
1 回答
265 浏览

haskell - 如何为 hsc2hs 枚举成员制作黑线鳕文档

我正在使用 hsc2hs 从 C 标头导入一堆枚举值。我的代码(简化)如下所示:

当我在我的项目上运行时,它会为声明和类型cabal haddock创建空文档块。现在我想要这些文档。只需使用黑线鳕风格的评论,如securityObjectUnknownsecurityObjectFileSecurityObjectType

干扰 hsc2hs 并使构建失败。但我想记录这些声明。我怎么能那样做?

UPD:如果我有评论,这是在构建期间生成的错误消息:

行号实际上并不匹配,因为示例已简化,但错误输出中的第 47 行对应于-- | Unknown object type一行。

挖掘生成SecurityInfo_hsc_make.c的文件清楚地显示了一个问题(这里是一个片段):

Haskell 注释只是简单地插入到生成的 C 文件中,这显然违反了 C 语法规则。我想要的是让这些评论传播到一个自动生成的.hs文件。

0 投票
1 回答
1306 浏览

c - hsc2hs:使用 Haskell 改变 C 结构

我正在尝试编写一个与 C 通信的 Haskell 程序(最终通过 GHC-iOS 用于 iOS)。我希望它将一个字符串从 C 传递给 Haskell,让 Haskell 处理它,然后通过 hsc2s 从 Haskell 返回一些数据类型到 C Structs。我一直未能找到一个清晰、简单的教程。Haskell 唯一需要 C 的东西就是字符串,没有别的。

我对第一部分没有任何问题,将字符串传递给 Haskell。

出于测试目的和未来参考,我只想能够处理以下内容。

C结构

Haskell 数据类型

我知道我需要将 TestData 类型分类为 Storable 并实现 peek、poke、sizeOf 和对齐,但我需要先看一个简单的例子才能真正理解它。大多数教程都需要外部库,并使其变得比需要的更复杂。

以下是我看过的资源:

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

Haskell Cafe - 适合初学者的 FFI

用 C 代码编写 Haskell 接口:hsc2hs

Haskell Wikibook - FFI

编辑:目前我被卡住了(在 C 中调用 setFoo 时出现分段错误)

Haskell 代码片段

C 代码片段