GHC 外部 hs_init/hs_add_root 崩溃

2024-01-18

不必要的我就不重复了,简单总结一下: 继Adder本教程中的示例 http://blogs.msdn.com/b/satnam_singh/archive/2011/04/19/creating-a-windows-dll-from-a-haskell-program-and-calling-it-from-c.aspx在装有 VS 2010 的 win7 (64) 机器上。 但我不使用 C++,而是使用纯 C。

当使用cl(微软编译器)与cl /Zi(并且没有其他标志)它按预期工作。 如果不使用/Zi然后尝试执行exe就着火了。

为什么? (一定有一些编译器/链接选项导致 haskell dll 启动时的某些 init 出错)

编辑: 一些调查:

/Zi不影响优化。然而,/Zi确实意味着/debug; see /DEBUG(生成调试信息) http://msdn.microsoft.com/en-us/library/958x11bc.aspx了解更多信息。

/DEBUG 更改默认值/OPT选项来自REF to NOREF和来自ICF to NOICF http://msdn.microsoft.com/en-us/library/xe4t6fc1.aspx(因此,您需要明确指定/OPT:REF or /OPT:ICF).]

/OPT:ICF可能会导致相同的地址被分配给不同的函数或只读数据成员(用编译的 const 变量/Gy). So, /OPT:ICF可以破坏依赖于函数地址或只读数据成员不同的程序。看/Gy(启用功能级链接) http://msdn.microsoft.com/en-us/library/bxwfs976.aspx了解更多信息。

有人可以证实吗/OPT:ICF会影响Haskell/GHC编译的共享库(dll)的加载吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GHC 外部 hs_init/hs_add_root 崩溃 的相关文章

随机推荐