问题标签 [c2hs]
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.
haskell - Haskell FFI - 返回更新的结构
我有以下C
要调用的函数Haskell
:
该函数应该接收一些property_list_t
并在其中填充一些值,因此调用者具有更新的结构。
我有所有必要的包装器property_list_t
(比如Storable
等),但我不知道如何把这个函数包装成类似的东西
我尝试使用C2HS
,还尝试手动编写 FFI 绑定,例如:
但在这两种情况下,我都得到了我原来的“人口不足”名单。
如何将更新的结构返回给 Haskell?
haskell - Haskell如何使用c中的extern FILE *?
我想从一些 c 头文件中导入一个函数,但是如何处理 FILE* 类型的标准错误,它定义为:
也许不准确。我将 c2hs 用于我的 ffi 工作,并且已经拥有:
但我不能像这样导入标准错误:
我的 c 函数具有签名:
我可以用 c2hs 导入 func:
我需要使用 stderr 来运行 func:
我对外国进口机制不熟悉。看来我不能以这种方式导入stderr。
附言。也许我会将我的函数包装在一个新函数中
这是一种解决方法,但似乎不干净。
haskell - Using alloca- with c2hs
Consider from the c2hs documentation that this:
generates in Haskell
which binds the following C function:
Problem: Here I'm confused what the effect of alloca-
has on the left side of, i.e., `Bool'
.
Now I know that, in practice, what is happening is that alloca
is somehow generating a Ptr Bool
that peekBool
can convert into an output argument. But what I'm terribly confused about is how alloca
is doing this, given its type signature alloca :: Storable a => (Ptr a -> IO b) -> IO b
. More specifically:
Question 1. When someone calls notebookQueryTabLabelPacking
in Haskell, what does c2hs provide as argument for alloca
's first parameter (Ptr a -> IO b)
?
Question 2. In this case, what is the concrete type signature for alloca
's first paramater (Ptr a -> IO b)
? Is it (Ptr CBool -> IO CBool)
?
haskell - 编组器中的 c2hs 与 gtk2hsC2hs
我试图理解c2hs
和gtk2hsC2hs
(c2hs
用于的修改版本gtk2hs
)之间的区别。考虑以下编码:
第二fun
行(例如cairo_pattern_get_matrix
)适用于两种工具(尽管生成的代码不同),而第一行(例如cairo_pattern_set_matrix
)仅适用于gtk2hsC2hs
.
使用时的错误信息c2hs
是:
我不清楚这里的问题,但从我的角度来看,这应该是有效的。
我用于c2hs
:
和gtk2hsC2hs
:
提前致谢
ghc - 如何让 c2hs 与 ghc CPP 扩展一起工作?
我在.hs 中有一些#IF 和#ENDIF。如果我只是将文件重命名为 .chs,则 #IF 和 #ENDIF 只是移动到 c2hs 生成的 .h 而不是 c2hs 生成的 .hs。
我没有在https://github.com/haskell/c2hs/wiki/Implementation-of-Haskell-Binding-Modules中看到这一点。
知道怎么做吗?谢谢。
haskell - 为绑定编写文档的正确方法是什么?
在为一些用 C 编写的库编写 Haskell 绑定时,必须做的事情是以黑线鳕格式编写文档。但是由于通常绑定很简单,因此文档将只是原始库文档的重新格式化。
所以我的问题是,是否有一些工具可以帮助解决这个问题?谢谢。
c - 带有 c2hs 的 Haskell FFi:更好的结构外编组
假设您有一个提供 C 结构的 C API
以及填充它的函数:
例如,这可能是从 C API 内部获取某些信息的 getter。
在 Haskell 中,C 结构将被镜像
Storable
实例是
peek 和 poke 与c2hs 处理的{#get...#}
和pragma 一样正常。{#set #}
Haskell 函数getA :: IO A
应该类似于
除了这不起作用,因为 c2hs 创建了这个绑定:
它Ptr ()
作为第一个论点。这可以通过
这allocaA
很重要,因为它确保A
分配内存而不是仅使用()
if的内存alloca
。
虽然这可行,但它有点乏味,而且如果你忘记写allocaXYZ
而不是只写alloca
. (我刚刚看到花了很多时间来追踪一个这样的错误。)
我希望找到一个{#fun...#}
产生的咒语
其他一切都会自然而然地遵循(注意Ptr A
代替Ptr ()
)。但据我所知,只有{allocXYZ- 'XYZ' peekXYZ*}
路线。
所以问题是:这可以用更好的方式完成c2hs
吗?