VB6 - dreaded Unexpected error (32810) with Crystal Reports components

I am trying to use / compile a project that someone else in my company prepared. Binary Compatibility is set and I get the Unexpected error (32810) message. From reading that I have done on the Internet, I am under the definite impression that the problem is that I have something registered on my machine that has a different TypeLib signature than the one in the binary compatibility reference dll.

I think that this is not the FileSystemObject problem (It is used, but no part of it is used in the public properties/methods/types) Also if I un-register it, the error remains.

It seems to me that my problem is Crystal Reports components. I have noticed that when I run Debug, Step Into (which causes the message) under Process Monitor from Sysinternals, it shows that crviewer.dll (used as a component) is being read just before the error. The sequence seems to be read the typelib key from the registry, read the referenced file (crviewer) and throw the error.


The project also uses craxdrt.dll as a reference. Un-registering combinations of craxdrt and crviewer changes the errors that I see as follows:
1)      Craxdrt registered and crviewer registered: Project loads OK, get Unexpected error (32810) when debug is attempted.
2)      Craxdrt registered and crviewer un-registered: Loads with &.crviewer.dll could not be loaded  Continue loading project? I answered Yes. Then Errors during load&. When you try the debug, User-defined type not defined
3)      Craxdrt un-registered and crviewer registered: Project Loads with a could not create reference to &&.craxdrt.dll. When you try the debug, The binary compatibility DLL or EXE contains a parameter type or return type whose definition can not be found
4)      Craxdrt un-registered and crviewer un-registered: Loads with &.crviewer.dll could not be loaded  Continue loading project? I answered Yes. Then get could not create reference to &&.craxdrt.dll. Then Errors during load&. When you debug, you get the The binary compatibility DLL or EXE contains a parameter type or return type whose definition can not be found

So based on the fact that un-registering these can prevent the Unexpected error (32810) message, How do I find out the precise component that is causing this? The next question is if I can find another version of the offending component, how do I check to see if it is the right one? Just register it and try again? There must be some tool that can examine the binary compatible reference dll and the component in question to see if they are defined the same way.

Thanks for any pointers!
LVL 1
exactjbAsked:
Who is Participating?
 
Vee_ModCommented:
Closed, 500 points refunded.
Vee_Mod
Community Support Moderator
0
 
mlmccCommented:
0
 
exactjbAuthor Commented:
The Process Monitor tool that I originally mentioned that I used is a combination of Filemon and Regmon. It replaces both.

http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/processmonitor.mspx

Thanks for the thought.
John
0
 
mlmccCommented:
I don't know how to debug tht issue.

mlmcc
0
 
exactjbAuthor Commented:
I have found the cause. Apparently the Crystal Reports folks did something BAD.

If I unregister the 10.5 versions of craxdrt.dll and crviewer.dll, and then register the 10.0 versions of the same, I can compile. There has to be something in the TLB signature(s) of the 10.5 versions that is not correct.

I will see if I can get help in another zone to get to the bottom of this.

Thanks,
John
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.