编写一个DLL来加载msvcr80.dll并公开free()函数
Writing a DLL that loads msvcr80.dll and exposes the free()-function
我有一个第三方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版本!)。
相关文章:
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 调用 "project" 函数和调用 DLL 函数之间的区别
- 代码在 msvcrt .dll函数上设置断点失败
- VB.NET DLL中的C++DLL函数复制
- 在python-ctypes中声明变量并传递给dll函数
- 从 Python 调用 Windows DLL 函数时出错
- 调用 dll 函数时"Run-Time Check Failure #0 - The value of ESP"
- 列出 C# 中的 non-.NET DLL 函数
- 基本 DLL 函数
- 如何在不可修改的源代码中使用 DLL 函数?
- 对需要双精度数组和结构作为输入C++ DLL 函数的 C# 调用
- WScript.CreateObject 在调用 C++ COM dll 函数时返回空
- 如何在 lua cpp 模块中调用托管 c++ dll 函数
- 测试C++ DLL 函数
- 从 C# GUI 将 char * 参数传递给C++ dll 函数
- 使用指针调用C++ DLL 函数
- 在C++中导入 DLL 函数
- #VALUE!在 64 位 Excel 中调用 DLL 函数 (C++) 时
- 如何从 UWP 应用调用"libheif.dll"函数