首页 > 解决方案 > 调用 FreeLibrary 后 DLL 仍然被锁定

问题描述

我的架构如下:

我遇到的问题是,我的示例中的 2.dll 仍然处于锁定状态(错误 32),即使在调用了 FreeLibrary 之后也是如此。

在我最初的测试中,Program.exe 可以 LoadLibrary,对它和 FreeLibrary 进行解锁,然后将相同的功能转移到 1.dll 中,Program.exe 也通过 LoadLibrary 加载,并且该过程继续完美运行。

为了避免动态加载 1.dll,我将它与 Program.exe 链接,这似乎已经破坏了它,因为除了更改链接之外没有其他任何改变,并且 1.dll 加载的 dll 保持锁定直到程序终止, FreeLibrary 仍然返回 true。

由于我需要动态加载大量函数,这似乎相当不切实际,我想解决其他 dll 被锁定的问题。如何让程序释放未使用的文件,就像我将 1.dll 链接到它之前所做的那样?

标签: cdllloadlibraryfilelock

解决方案


推荐阅读