2

我正在按照指南在此处从其他语言调用 DLL:

http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/win32-dl​​ls.html

我首先编译 Haskell 模块和辅助 C 文件,如下所示:

ghc -c SanitizeXSS.hs

ghc -c StartEnd.c

但是当我尝试像这样将它们链接在一起时:

ghc -shared -o SanitizeXSS.dll SanitizeXSS IdsSanitizeXSS_stub.o StartEnd.o

我收到很多这样的错误消息:

SanitizeXSS.o:fake<.data+0760>:未定义对“textzm0zi11zi1zi5_DataziText_zdf0rdText_closure”的引用

SanitizeXSS.o 是我编译 Haskell 模块时自动生成的目标文件。

我已经尝试过-no-hs-main其他线程中提到的技巧。

上下文:我正在尝试使用 FFI 导出一个 Haskell 函数,然后我希望在 C# 中调用托管包装器。

4

1 回答 1

1

尝试传递--make给 ghc,以便它解析对缺少的 Haskell 库的引用。或者,列出您要明确链接的 Haskell 包。

于 2012-05-17T22:31:58.063 回答