Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determining why binary compatibility is broken

When I try to rebuild one of my VB6 DLLs, I get a warning:

"The binary compatibility DLL or EXE contains a parameter type or return type whose definition can not be found"

I have to release a few changes in selected DLLs (simple changes internal to methods - nothing that breaks the compatibility according to this)

The generally accepted method which I have followed is to maintain the old DLLs in a separate shared directory and while making the new DLLs, compile them with binary compatibility set to the old set of DLLs. This is done to not change the GUIDs while I register my new DLLs. These GUIDs are used as references in other DLLs which I have not disturbed during the release.

I'm pretty sure I didn't add anything to break the binary compatibility rule (No change in signature, public methods, variables etc.) Why is this error occurring?

Am I being a noob by not checking something basic? Scratching my head since morning. Any help is much appreciated.

EDIT: If at all there are changes to my signature, Is there a way that I can know without comparing code?

like image 826
maverick Avatar asked Apr 02 '13 18:04

maverick


1 Answers

Take your old DLLs and add a compat_ prefix to them.

Basically rename your MyAppDataAccess.dll file to compat_MyAppDataAccess.dll.

Now go to the properties of your ActiveX DLL and set your project to have binary compatibility with the new compat_MyAppDataAccess.dll, like below.

Now just build your DLL and deploy it.

It should work. If, in fact you binary compatibility would be broken as a result of your changes, then you'll get a warning stating that.

enter image description here

like image 51
AngryHacker Avatar answered Oct 03 '22 04:10

AngryHacker