编译一个组件 与前一个版本的组件binary兼容
但老是版本不兼容
弹出一个 breack compatibity的选项
preserve compatibity变灰 不可选怎么才能做到版本兼容
至少preserve compatibity可选请各位高手 讲讲原理 帮帮忙 我现在要做到版本兼容
但老是版本不兼容
弹出一个 breack compatibity的选项
preserve compatibity变灰 不可选怎么才能做到版本兼容
至少preserve compatibity可选请各位高手 讲讲原理 帮帮忙 我现在要做到版本兼容
如果接口改变了,就不可能保持兼容,比如函数参数发生了变化
重新编译后所有使用者必须重新引用
1.将原先的 DLL 备份一下,用中断兼容的方式编译一下
2.用 Visual Studio 的工具 OLE Viewer 的 View TypeLib 功能分别打开两个 DLL,保存为 IDL 文件
3.用文本比较工具比较两个 IDL 文件
我想问能不能通过修改原代码的类接口,做到跟以前版本binary兼容。
看来Tiger_Zhao(VB老鸟)大哥对这个很了解,我怎么样才能修改原代码的类接口,做到跟以前版本binary兼容。因为我要发不做到兼容的话,原来系统很多功能都不可用了。
Original definition: 现有:Implements CData2Original definition:
Function InsertCell(a_Style As DataEXT.CellStyle) As DataEXT.CCellCurrent definition:
Function InsertCell(a_Style As CellStyle) As CCellOriginal definition:
Public Form As DataEXT.CFormCurrent definition:
Public Form As CForm
Original definition:
Property Set Form(ByVal RHS As DataEXT.CForm)Current definition:
Public Form As CFormOriginal definition:
Public Form As DataEXT.CFormCurrent definition:
Public Form As CForm
Original definition:
Property Set Form(ByVal RHS As DataEXT.CForm)Current definition:
Public Form As CForm
从上面的报警来看,确实是接口不一致,
Original definition:
Implements CData2___v0
现有:Implements CData2Original definition:
Function InsertCell(a_Style As DataEXT.CellStyle) As DataEXT.CCellCurrent definition:
Function InsertCell(a_Style As CellStyle) As CCellOriginal definition:
Public Form As DataEXT.CFormCurrent definition:
Public Form As CForm
Original definition:
Property Set Form(ByVal RHS As DataEXT.CForm)Current definition:
Public Form As CFormOriginal definition:
Public Form As DataEXT.CFormCurrent definition:
Public Form As CForm
Original definition:
Property Set Form(ByVal RHS As DataEXT.CForm)Current definition:
Public Form As CForm
从上面的报警来看,确实是接口不一致,但是前一个版本不可能是Implements CData2___v0的,
也应该是Implements CData2。
就算我把原来的接口改为跟现在报错的一样,也会出现如下的报错:
Original definition:
Function InsertCell(a_Style As DataEXT.CellStyle) As DataEXT.CCell
Current definition:
Function InsertCell(a_Style As DataEXT.CellStyle) As DataEXT.CCell我不明白,现在接口应该一样了,为什么还会出错,难道是因为它们的clsid不一样,那应该怎么样做
才能使它们的clsid一样呢。
在DLL一大把的项目中造成的麻烦很多