在dll中使用mingw32下的gc时的任何特殊注意事项

时间:2017-12-23 17:32:36

标签: mingw boehm-gc

我在mingw32项目中使用gc,我遇到了以下问题: 当程序静态链接时,没有问题,程序运行正常。但是,在将某些组件移动到dll之后,程序崩溃了。 有什么建议? 问候, bostjanv

1 个答案:

答案 0 :(得分:0)

boehm-gc需要知道要扫描的数据根,每个.dll都有自己的数据段,因此应以某种方式进行注册。通常,它应该自动注册(包括mingw32在内,内部GC_register_dynamic_libraries函数负责在.dlls中发现根并进行注册)。要查看哪些数据根已注册,请在加载.dll后插入GC_gcollect()和GC_print_static_roots()调用。 如果您在Windows 10主机上运行boehm-gc,请确保您的libgc-1.dll具有patch,该问题可以通过PAGE_WRITECOPY标志修复对.dll节的处理。