编写一个DLL来加载msvcr80.dll并公开free()函数

Writing a DLL that loads msvcr80.dll and exposes the free()-function

本文关键字:dll 函数 free msvcr80 一个 DLL 加载      更新时间:2023-10-16

我有一个第三方DLL,它依赖于MSVCR80并分配我需要清理的资源。库没有公开free -函数来完成此操作。相反,我需要加载相同的运行时库并手动调用free函数。

作为一个解决方案,我试图写一个"包装器"DLL加载正确的运行时和暴露free函数。这个DLL是使用Visual Studio 2010创建的,并且依赖于一个单独的运行时库。做LoadLibrary("msvcr80.dll")失败错误R6034,我猜是由于明显的问题。

是否可以使用LoadLibrary加载msvcr80.dll ?我是否需要创建一个清单,将其嵌入到DLL中并将msvcr80.dll存储在与包装器DLL相同的目录中?

我意识到这是第三方库的一个缺陷,但我基本上坚持使用这个版本。让供应商解决这个问题很可能不是一个选项。

可能有更好的解决方案,但万一其他方法都失败了,您可以在某处找到vc++ 2005 Express Edition(=免费,不需要盗版;))的副本,它使用版本8.0的编译器,因此与有缺陷的dll相同的运行时。

然后你会用它来构建你的包装器dll,它只会调用它的CRT提供的free(仔细检查你正在使用dll版本!)。