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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With