PDA

View Full Version : Binary Compatibility


garyb@se.rr.com
12-05-2007, 12:48 PM
I know that this topic has been tossed about, but reading the posts I got lost :)

I have a few DLL's and an EXE server that are all made to be Binary Compatible using VB6.

When I do a build (and this is whats confusing) how do I get the compiled Compatibility references to compile automatically if the reference has changed?

In other words, if I change the interface of a function in my DLL's or EXE Server, when I go to compile I get the ole Binary Compatibility error.

Can VBP automatically rebuild the compatibility reference if it is no longer the same?

From what I see in the configuration choices for the steps in VBP there is a field that says "Update the Compibility Directory for Each project", but it does not seem to do what I think it's going to do... in fact, it does not seem to do anything...

Any help or clarification would be appreciated.

kinook
12-05-2007, 01:14 PM
To avoid the compatibility error when building after breaking interface compatibility, on the Compatibility tab of the Make VB6 action, change 'Set version compatibility before building' to Project compatibility.

garyb@se.rr.com
12-05-2007, 02:09 PM
Originally posted by kinook
To avoid the compatibility error when building after breaking interface compatibility, on the Compatibility tab of the Make VB6 action, change 'Set version compatibility before building' to Project compatibility.

It does not seem to make any difference. My VBP project starts with one A/X DLL with no references, I then have another that references the first one, and another that references the first two and so on, and then 5 regular EXE programs that all have references to the DLL's.

What happens is that I have to go to the second DLL, change the compatiblility to NONE in VB6, recompile my compatibility reference to create the file DLL, then set the project back to Binary compatibility then recompile the distribution DLL to another folder, then do the 3rd DLL and 4th and so on...

Then I have to open all of my regular EXE's to change the references and recompile them!

I only really have to do all of this if I change something in one of the DLL's, which I try not to do unless it's necessary, but when it is necessary it's a pain :)

kinook
12-05-2007, 02:29 PM
What exactly do you mean by 'It does not seem to make any difference.'? Testing here with VBP v6.6 and the sample at %ProgramFiles%\VisBuildPro6\Samples\Visual Studio\VStudio.bld (which creates VB6 projects similar to what you described under %TEMP%\VisBuildPro\VStudio\work\Source\VS6 when built), after building the 'Build VB6 projects' step, then modifying the signature of DoSomething() in SecondVB\SecondVB.vbp -> Class2.cls (and the corresponding call in FirstVB\FirstVB.vbp -> First.frm if needed), rebuilding the 'Build VB6 Projects' step fails with the expected compatibility error, but changing the aforementioned option to 'Project compability' and rebuilding works. Please tweak that sample to demonstrate the problem. Thanks.