首先,我指的是Windows环境和VC ++编译器。
我希望能够做的是重建一个VC DLL,并与已被链接到lib而无需重建exe文件或加载动态使用的LoadLibrary的dll一个exe保持兼容性。 换句话说,是有办法的类和方法添加到一个dll(但不删除任何),并确保现有的入口点保持不变?
首先,我指的是Windows环境和VC ++编译器。
我希望能够做的是重建一个VC DLL,并与已被链接到lib而无需重建exe文件或加载动态使用的LoadLibrary的dll一个exe保持兼容性。 换句话说,是有办法的类和方法添加到一个dll(但不删除任何),并确保现有的入口点保持不变?
如果您使用DEF文件和手动指定序号导出功能,你应该能够做到这一点。
参考
http://msdn.microsoft.com/en-us/library/d91k01sh(VS.80).aspx
这要看你的EXE从DLL使用的类。 添加新的类应该不会影响现有的入口点。 除此之外,然而,任何下面会影响对象的大小和/或布局,因此将是一个客户端的最新变化(注意,这在技术上是VC特有的,但其中大部分适用于任何理智的实现):
只要你不添加任何导出的符号,该序号不会改变。 如果您通过标准DLLEXPORT机制增加出口的符号,那么这将是难以控制的。 如果您使用旧式.xpf符号文件你也许可以控制符号的次序在lib(虽然我不知道这是肯定的 - 它可能仍然重新排序是什么样子),但它的棘手做C ++符号这种方式。
我认为,序很少被使用到了解决DLL进口 - 我认为你必须使用.DEF文件来获取连接使用它们。 所以只要你不改变的导出函数的名称或签名,该.exe应该只是罚款。