编写一个加载msvcr80.dll并暴露free()函数的DLL

时间:2011-09-14 16:14:44

标签: c++ winapi dll manifest msvcrt

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

作为一种解决方法,我正在尝试编写一个“包装器”DLL,它加载正确的运行时并公开free函数。此DLL是使用Visual Studio 2010创建的,并且依赖于单独的运行时库。执行LoadLibrary("msvcr80.dll")失败,错误R6034,我猜是因为明显的问题。

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

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

1 个答案:

答案 0 :(得分:3)

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

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