我正在按照指南在这里使用其他语言调用DLL:
http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/win32-dlls.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#中的Managed Wrapper中调用它。
答案 0 :(得分:1)
尝试将--make
传递给ghc,以便解析对缺少的Haskell库的引用。或者,列出您明确链接的Haskell包。