gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:25:56 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

GetModuleHandle() 的文档指出:

The GetModuleHandle function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the FreeLibrary function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by GetModuleHandle to the FreeLibrary function. Doing so can cause a DLL module to be unmapped prematurely.

尽管警告不要这样做,听起来这正是您想要做的。这应该很容易在您的场景中进行测试,以验证它是否按照您的要求进行。

关于c++ - 有没有办法显式分离隐式链接的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com