Solved

Problem with REGSVR32 and VB DLL

Posted on 1997-11-05
13
400 Views
Last Modified: 2010-05-18
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
Comment
Question by:rmichels
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
13 Comments
 
LVL 3

Expert Comment

by:ChrisLewis
ID: 1439945
What order are you registering the classes in?

Are you regsvr32'ing Class1 first or class2?

chris
0
 
LVL 3

Author Comment

by:rmichels
ID: 1439946
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
 
LVL 2

Expert Comment

by:PedroMVGomes
ID: 1439947
have you try reportin this bug to microsotf?
0
[Live Webinar] The Cloud Skills Gap

As Cloud technologies come of age, business leaders grapple with the impact it has on their team's skills and the gap associated with the use of a cloud platform.

Join experts from 451 Research and Concerto Cloud Services on July 27th where we will examine fact and fiction.

 
LVL 3

Author Comment

by:rmichels
ID: 1439948
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
 
LVL 8

Expert Comment

by:MikeP090797
ID: 1439949
Look for RegSvr32 update at Microsoft FTP site.
0
 
LVL 3

Author Comment

by:rmichels
ID: 1439950
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
 
LVL 8

Expert Comment

by:MikeP090797
ID: 1439951
Sorry, I don't. It's someware deep down there.
0
 
LVL 3

Author Comment

by:rmichels
ID: 1439952
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
 
LVL 1

Expert Comment

by:aprasrl
ID: 1439953
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
 
LVL 3

Author Comment

by:rmichels
ID: 1439954
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
 
LVL 8

Expert Comment

by:mrmick
ID: 1439955
Why not compile both into one ActiveX.DLL?
0
 
LVL 3

Author Comment

by:rmichels
ID: 1439956
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
 
LVL 7

Accepted Solution

by:
linda101698 earned 200 total points
ID: 1439957
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

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Suggested Courses
Course of the Month7 days, 7 hours left to enroll

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question