Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 402
  • Last Modified:

Problem with REGSVR32 and VB DLL

I have encountered a problem trying to register a VB Active DLL.  It's a bit complicated so I hope i can explain it clearly :)

1) Create an activeX DLL with clsClass1

2) Create an activeX DLL with clsClass2, which has a reference to clsClass1 AND a method in clsClass2 takes as a parameter clsClass1

3) Compile on machine 1 and create a project to reference and use clsClass2 and clsClass1...all is well

4) copy DLLs or clsClass1 and clsClass2 to machine 2 and run REGSVR32 on both Dlls

5)  create a project that references both DLLs and do a browse on clsClass2....the method that expects clsClass1 as a parameter now shows no parameters AND when you try to use that method you get a compiler error saying the function is restricted or does not recognize the parameter or return types.

For some reason using REGSVR32, the parameters defined as a specificy class causes problems.  If you go back and change the parameter to a general purpose object...it works fine on the second PC.  

Does anyone have any way to get around this problem?  In order to keep the GUIDs sane, I want to compile them in one place and distribute and register the DLLs to other developers on the project. HELP!!!!!
0
rmichels
Asked:
rmichels
1 Solution
 
ChrisLewisCommented:
What order are you registering the classes in?

Are you regsvr32'ing Class1 first or class2?

chris
0
 
rmichelsAuthor Commented:
I'm registering the lowest level dependent class first, so that is Class1.  Then I register class2.

Another twist to this problem, is that this seems to work, if Class1 is NOT a vb developed class, but a VC++ class.  It seems to me that REGSVR or the info in the DLL is wrong
0
 
PedroMVGomesCommented:
have you try reportin this bug to microsotf?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
rmichelsAuthor Commented:
I have not reported this bug to microsoft, but I think a co-worker is probably going to post some information on the appropriate newsgroup.  I generally find the response from microsoft, via newsgroups to be unacceptable in the how long it takes to get an answer.
0
 
MikeP090797Commented:
Look for RegSvr32 update at Microsoft FTP site.
0
 
rmichelsAuthor Commented:
I have searched microsoft's site but could only find the same regsvr32.exe that I have (Aug 96).  Do you have an exact path for this file?
0
 
MikeP090797Commented:
Sorry, I don't. It's someware deep down there.
0
 
rmichelsAuthor Commented:
Sorry to reject, but I could not find any reference to an updated REGSVR32.EXE anywhere in MSDN. There is a REGSVR32A.EXE which contains the same REGSVR32.EXE that I am running.

Also, the problem appears to have been solved.  The compatibility options were not set correctly in the VB Project options.  Changes must must have been made that somehow negated the interface.

So I am going to request this question be deleted by Cust.Serv
0
 
aprasrlCommented:
First:

In your project make SURE that the reference to clsClass1
comes BEFORE the reference to clsClass2 or it will NEVER
work (use the MoveUp/MoveDown arrows of references dialog)

Second Try this:

change the reference and the parameter in clsClass2 from
clsClass1 to "Object" this could solve the problem of the
object browser

I Hope I've been of some help, let me (all us) know... :-)
0
 
rmichelsAuthor Commented:
Sorry, my last comment states I have figured this out (and what the problem was), and I have asked cust serv to delete question.
0
 
mrmickCommented:
Why not compile both into one ActiveX.DLL?
0
 
rmichelsAuthor Commented:
please read my previous comments. I have already solved this problem and have asked cust serv to delete..but they have not as yet.   The two units were not compiled into one dll because this a three tier design, with each tier containing appropriate DLL and EXE activeX components.
0
 
linda101698Commented:
I'm posting the solutions rmichels stated solved the problem so the question can be saved in the PAQ.

The problem appears to have been solved. The compatibility options were not set correctly in the VB Project options. Changes must must have been made that somehow negated the interface.

The two units were not compiled into one dll because this a three tier design, with each tier containing appropriate DLL and EXE activeX components.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now