Using an OCA to pass an OCX reference between components

Background
I have a thirdparty OCX which resides in an executable. A reference to this OCX is being passed to a DLL (to allow the code in the DLL full control over the OCX control). At runtime, we pass the OCX reference from exe to dll as type object, and then cast it back to the specific type within the dll. Within the DLL we have referenced the OCA (and not the OCX) to allow a cast to the extended interface of the control (which I need) .

Problem:
I have found recently that the OCA on our build machine was somehow updated. This has caused incompatability between an exe built against an older OCA and a dll built against a newer OCA. A type mismatch occurs when the cast is attempted. (This is clearly a concern when you're looking to ship updated components and not full releases).

I must confess that I do not know a lot about OCA's, and I have not found much information to date. I've seen an explanation of what they are, but not how they should be used (if at all).

I don't understand why they are updated, or why a newly generated one is incompatabile with an older version of the same OCA.
From reading some of the other OCA related topics, I'm getting the impression that referencing the OCA is not the correct approach. How then do I pass the OCX between components, exposing the extended interface of the control?

Can you please advise?

Thanks in advance
JohnG