What does this IDL record mean?
- From: alexey_yumashin <a.yumashin@xxxxxxxxx>
- Date: Thu, 27 Sep 2007 07:26:10 -0700
I have 2 "ActiveX DLL" VB6-projects referencing each other. The
referring project has been created years ago and hasn't been changed
all this time. The referenced project has been changed often; to say
more exactly - its interfaces have been extended several times (new
public classes and public members of existing classes has been added
several times).
Today I decided to make minor changes (not touching interfaces) in the
_referring_ project. This gonna be the first change in this project
during the last several years. I opened it in VB IDE, made some
changes and clicked "Make...". The following error appeared
immediately:
"Variable uses an Automation type not supported in Visual Basic"
When after 2 or 3 hours struggling with this error I decided to view
typelib of this project in the "OLE Viewer", I saw the following (I
omit all members except the one under question):
typedef [uuid(3B34ABCA-8468-4C73-BAA2-3881285DB782), version(1.0)]
struct tagIDate {
< omitted >
[helpstring("g_adoc")]
clsADOConnection___v3* g_adoc;
< omitted >
} IDate;
(here clsADOConnection is the name of one of the classes defined
inside the referenced project)
My question is: what does this mean - "clsADOConnection___v3" ? I mean
- why "___v3" in the end ? I can suppose that it's the typelib
version, but I can't understand why it is explicitly referenced. The
point is that if I view IDL of _other_ VB6-projects referencing the
same clsADOConnection class, I'll see the following:
[helpstring("member")]
_clsADOConnection* member;
The most interesting thing is that I managed to fix the error only in
the following manner: I changed "Version compatibility" to "No
compatibility" in the properties of the referring (!) project,
compiled it (no error occured this time!), then changed "Version
compatibility" back to "Binary compatibility" and recompiled it again.
After that checked the recompiled DLL in the OLE Viewer - and yes!
"clsADOConnection___v3" changed at last to "_clsADOConnection"!
(of course this approach pushed me to fix references in all dependant
projects, but it was not a problem)
I just wonder what's this all about... any _expert_ opinion will be
greatly appreciated!
.
- Follow-Ups:
- Re: What does this IDL record mean?
- From: Ken Halter
- Re: What does this IDL record mean?
- Prev by Date: Re: Binary Compatible DLL causes Missing or Invalid Reference in E
- Next by Date: Re: Binary Compatible DLL causes Missing or Invalid Reference in E
- Previous by thread: Binary Compatible DLL causes Missing or Invalid Reference in Excel
- Next by thread: Re: What does this IDL record mean?
- Index(es):
Relevant Pages
|