有没有办法显式分离隐式链接的DLL?

时间:2012-08-06 22:37:35

标签: c++ unit-testing dll

这不适用于生产代码,这适用于单元测试。

我们有一个遗留DLL,可以释放DLL_PROCESS_DETACH事件上的资源。我们在可执行文件的静态破坏阶段遇到了崩溃情况,因为静态变量的析构函数试图访问DLL未映射的资源(悬空引用)。

我想在单元测试中重现这个崩溃场景,这样我就可以证明我已经修复了它。

1 个答案:

答案 0 :(得分:2)

您可以使用GetModuleHandle(LPCTSTR lpModuleName)获取该模块的句柄,并将其传递给FreeLibrary()

GetModuleHandle()州的文档:

  

GetModuleHandle函数返回映射模块的句柄,而不增加其引用计数。但是,如果将此句柄传递给FreeLibrary函数,则映射模块的引用计数将递减。因此,请勿将GetModuleHandle返回的句柄传递给FreeLibrary函数。这样做会导致DLL模块过早地取消映射。

尽管警告这样做,但这听起来就像你正在寻找的那样。这应该在您的方案中相当容易测试,以验证它是否符合您的要求。