我正在学习如何从库中调用C ++调用haskell代码,我按照FFI完整示例http://www.haskell.org/haskellwiki/FFI_complete_examples
的说明进行操作 然而,在之后ghc -v Foo.hs
仅创建了Foo_stub.h
和Foo.o
,没有Foo_stub.c
或Foo_stub.o
。根据{{3}},ghc> 7.2不再生成_stub.o
。
在这种情况下,我是否还需要stub.o
来链接可执行文件使用g ++ ?
之后的那一刻
g++ -o test Foo.o test.o `cat link_options`
我为hs_init
等获取了大量未定义的符号错误。是因为_stub.o
不存在还是缺少其他东西?
我可以使用ghc正确链接它们:
ghc -no-hs-main -o test test.o Foo.o -lstdc++
(阅读此问题后:Calling Haskell from C)
但我想知道是否仍然可以使用g ++进行链接?
答案 0 :(得分:1)
你正在看一个过时的例子(它使用的是ghc 6.12.3)。此示例适用于7.6.3: