我目前的理解是: 没有64位的GHC,票据#1884 32位的GHC和它构建的二进制文件都可以正常工作,因为Windows操作系统加载器会将OS调用和指针转换为64位。 同样适用于DLLs 不能混合32位和64位代码(即你的32位Haskell DLL不会与想要使用它的64位程序相容) 最新的讨论在2011年5月的一篇帖子中开始 这些是否正确?有没有需要特别注意的陷阱,尤其对于FFI用户来说?例如,如果我将一些Haskell代码导出为32位DLL到某个Windows程序,我应该期望它可以工作吗? 编辑:看起来你需要一个64位的DLL来配合64位进程。
我不知道现在是否有人在积极开发64位的代码生成器,但只要你只与32位FFI库交互(和/或嵌入到32位主程序中),32位的Haskell就可以正常工作了。如果你想与64位程序进行交互,你需要使用某种形式的进程间通信(IPC),因为32位和64位的代码无法共存于一个进程中。