Domanda

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?

È stato utile?

Soluzione

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top