DLL封装和DLL的区别

我不知道什么是DLL包装。 有人能解释我吗?
1)什么是DLL包装?
2)它与DLL有什么不同?
3)如何使用它?

感谢致敬,

Solutions Collecting From Web of "DLL封装和DLL的区别"

当一个程序使用DL​​L时,它是这样的:

  • 应用程序加载foo.dll
  • 应用程序在foo.dll中调用函数
  • foo.dll执行函数并将值返回给应用程序

与包装DLL,这将发生:

  • 应用程序加载foo.dll(不知道或关心foo.dll实际上是包装,并且原来的DLL已经重命名为foo_original.dll)
  • foo.dll加载foo_original.dll
  • 应用程序在foo.dll中调用函数
  • foo.dll将调用转发给foo_original.dll
  • foo_original.dll执行函数并将值返回给foo.dll
  • foo.dll将值返回给应用程序

这使得DLL包装器有机会检查/记录应用程序对原始DLL所做的所有调用,并且有机会修改在这两者之间传递的数据。

DLL包装调用另一个DLL来提供所需的功能。 出于简单性或兼容性的原因,它可能会也可能不会提供其特殊的API。 这是一个教程 ,展示了如何制作一个包装DLL。 在这个特定的教程中,来自DirectX 9的一些类被包装并用于在flash3D窗口内呈现一个茶壶。