我有一个依赖于MSVCR80的第三方DLL,并分配我需要清理的资源。该库不公开free
- 函数来执行此操作。相反,我需要加载相同的运行时库并手动调用free
函数。
作为一种解决方法,我正在尝试编写一个“包装器”DLL,它加载正确的运行时并公开free
函数。此DLL是使用Visual Studio 2010创建的,并且依赖于单独的运行时库。执行LoadLibrary("msvcr80.dll")
失败,错误R6034,我猜是因为明显的问题。
是否可以使用LoadLibrary
加载msvcr80.dll?我是否需要创建清单,将其嵌入到DLL中并将msvcr80.dll存储在与我的包装DLL相同的目录中?
我意识到这是第三方库中的一个缺陷,但我几乎坚持使用这个版本。让供应商解决这个问题很可能不是一种选择。
答案 0 :(得分:3)
可能有更好的解决方案,但万一其他方法都失败了,你可以找到一个VC ++ 2005 Express Edition的副本(=免费,不需要盗版{{ 1}}),它使用编译器的8.0版本,因此使用有缺陷的dll的相同运行时。
然后你会用它构建你的包装器dll,它只会调用它的CRT提供的;)
(仔细检查你是否正在使用dll版本!)。