jmm
12-21-2004, 05:37 PM
I have discovered that every time I (re-)build a VB6 COM object, it ends up with new IIDs (Interface UUIDs).
This happens even though:
1) Binary compatibility is ON (see "Build VB6" VBP project file below).
2) The VB6 source has not changed.
3) The *only* deltas in the interface are the IIDs, the interface content is identical.
4) No other GUIDs (CLSID, TypeLib) change.
This started happening after I started using VBP to do the builds. While I am not saying VBP caused this problem (and I don't see how it could), when I build the exact same source on an older version ("pre-VBP") of the build system disk, the IIDs do not change. The IIDs also change if I build the project the "pre-VBP" way using the current (VBP) build system disks.
Any ideas on what is causing the IIDs to change?
Notes:
1) I found the changing IIDs by using "OLE View" to generate IDL for a problem DLL (VBIliadDataMgr.dll) TypeLib.
Then I used WinDiff and found that 3 IIDs differed.
It is always the same 3 IDs that change, the other 7 do not change.
I have attached IDL made from 3 versions of this DLL.
2) The "Build VB6" VBP project file used to run the IDE looks like:
<?xml version='1.0'?>
<project version='5'>
<step action='Group' type='0'>
<name>Project steps</name>
</step>
<step action='Make VB6' type='0'>
<Attr type='11'>-1</Attr>
<BinCompat type='11'>-1</BinCompat>
<CompatDir>..\cbin</CompatDir>
<Filename>%PROJ_FILE%</Filename>
<IncrReason type='11'>-1</IncrReason>
<TargDir>..\bin</TargDir>
<Version>%VB6BLDVERSION%</Version>
<VersionSel type='3'>2</VersionSel>
<ignorefail type='11'>-1</ignorefail>
<indent type='3'>1</indent>
<name>VB6 build</name>
</step>
</project>
3) FWIW, the run-time error associated with this problem is the expected one:
Run-time error '430':
Class does not support Automation or does not support expected interface
This happens even though:
1) Binary compatibility is ON (see "Build VB6" VBP project file below).
2) The VB6 source has not changed.
3) The *only* deltas in the interface are the IIDs, the interface content is identical.
4) No other GUIDs (CLSID, TypeLib) change.
This started happening after I started using VBP to do the builds. While I am not saying VBP caused this problem (and I don't see how it could), when I build the exact same source on an older version ("pre-VBP") of the build system disk, the IIDs do not change. The IIDs also change if I build the project the "pre-VBP" way using the current (VBP) build system disks.
Any ideas on what is causing the IIDs to change?
Notes:
1) I found the changing IIDs by using "OLE View" to generate IDL for a problem DLL (VBIliadDataMgr.dll) TypeLib.
Then I used WinDiff and found that 3 IIDs differed.
It is always the same 3 IDs that change, the other 7 do not change.
I have attached IDL made from 3 versions of this DLL.
2) The "Build VB6" VBP project file used to run the IDE looks like:
<?xml version='1.0'?>
<project version='5'>
<step action='Group' type='0'>
<name>Project steps</name>
</step>
<step action='Make VB6' type='0'>
<Attr type='11'>-1</Attr>
<BinCompat type='11'>-1</BinCompat>
<CompatDir>..\cbin</CompatDir>
<Filename>%PROJ_FILE%</Filename>
<IncrReason type='11'>-1</IncrReason>
<TargDir>..\bin</TargDir>
<Version>%VB6BLDVERSION%</Version>
<VersionSel type='3'>2</VersionSel>
<ignorefail type='11'>-1</ignorefail>
<indent type='3'>1</indent>
<name>VB6 build</name>
</step>
</project>
3) FWIW, the run-time error associated with this problem is the expected one:
Run-time error '430':
Class does not support Automation or does not support expected interface