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

lar*_*moa 6 c++ dll winapi manifest msvcrt

我有一个依赖于MSVCR80的第三方DLL,并分配我需要清理的资源.该库暴露free-函数这样做.相反,我需要加载相同的运行时库并手动调用该free函数.

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

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

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

Mat*_*lia 3

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

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