6

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

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

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

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

4

1 回答 1

3

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

然后,您将使用它构建您的包装器 dll,它只会调用free其 CRT 提供的 (仔细检查您是否使用的是 dll 版本!)。

于 2011-09-14T16:31:08.140 回答