如何为现有的dll创建一个替代品?

时间:2010-04-09 07:30:54

标签: windows dll map replace export

除了使用相同的接口和调用约定创建具有所有相同功能的dll之外,替换dll是否需要完全复制导出映射,包括原始的序号?这样不仅可以通过GetProcAddress进行显式加载,还可以进行隐式链接?

(编辑:这是一个非托管的,我正在谈论的c / c ++ windows dll,而不是.net)

1 个答案:

答案 0 :(得分:1)

您需要模仿任何其他客户端正在使用的每个导出,您不需要模仿没有人使用的“死”导出。只有在通过使用序号而不是导出名称链接其他客户端时才需要保留序数(这是非常罕见的)。

你需要记住一些事情:如果dll包含C ++类并且它没有使用 extern “C”那么你需要保持二进制可比性,这意味着替换dll需要具有与原始类相同顺序的相同字段。如果你需要使用接口来保持vtable与每个方法的参数相同。