C++ 有没有一种方法可以显式地解除隐式链接DLL的跟踪?

C++ 有没有一种方法可以显式地解除隐式链接DLL的跟踪?,c++,unit-testing,dll,C++,Unit Testing,Dll,这不是用于生产代码,而是用于单元测试 我们有一个遗留DLL,它释放DLL\u进程\u分离事件上的资源。我们在可执行文件的静态销毁阶段遇到了一个崩溃场景,因为静态变量的析构函数试图访问DLL(悬挂引用)未映射的资源 我想在单元测试中重现这个崩溃场景,这样我可以证明我已经修复了它。您可以使用获得模块的句柄,并将其传递给 GetModuleHandle()的文档说明: GetModuleHandle函数返回映射模块的句柄,而不增加其引用计数。但是,如果将此句柄传递给freebrary函数,则映射模块的

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

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


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

您可以使用获得模块的句柄,并将其传递给

GetModuleHandle()的文档说明:

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


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

我将用您的答案来回答我自己的问题;)但我想先测试一下。看起来我可以用GetModuleHandle()找到我的DLL,FreeLibrary()返回TRUE。。。我现在正在尝试验证DLL是否已实际卸载。不幸的是,在我返回主DLL之前,DLL似乎仍未卸载。我想这是操作系统的特权。@HansPassant我希望我的代码在我这么做的时候崩溃。。。然后我就要去修理东西了;)