PDA

View Full Version : VB6 IIDs changing for no obvious reason.


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

jmm
12-21-2004, 05:40 PM
A ZIP of the IDL files seemed to disappear from my original posting. So here they are.

kinook
12-22-2004, 02:23 PM
Not really. I'm pretty sure it's a VB thing and not VBP, since the Make VB6 action ultimately invokes the VB6 compiler to actually build. You might turn off any custom functionality of the Make VB6 action (settings on the Compatibility and Versions tab) to see if it makes a difference.

One of these posts might be related to what you're seeing: http://groups-beta.google.com/groups?q=vb6%20binary%20compatibility%20iid%20chan ging&hl=en&lr=&sa=N&tab=wg