Groups | Blog | Home
all groups > dotnet faqs > july 2006 >

dotnet faqs : TLB using problem


vul
7/13/2006 9:42:54 AM
I created very simple Class Library in VB 2005 (let's call it COMInterop). I
set Register For COM Interop property to true to make it accessible by VB6
program.
After I compiled it, I got COMInterop.dll and COMInterop.tlb files, I have
no problem with using both of them on the machine where the project was
compiled - TLB with VB6 clients and DLL with VB 2005 clients.
I copied the tlb and dll files onto another machine and registered TLB file
with regtlib.exe. I've got a message about successful registration.
I created a new VB 2005 Windows Form project, added the reference to
COMInterop.dll and it works fine.
I created VB6 project, added a reference to this TLB. I'm trying to use it
with the simple code which works with VB 2005, but produces an error in VB6:
Run time error '429':
ActiveX component can't create object

The code in client:
Private obj As COMInteropTest.COMInterop
Private Sub Command1_Click()
Set obj = New COMInteropTest.COMInterop 'The error occurs on this line
MsgBox obj.myFunction
End Sub

What am I missing? How do I make VB6 client work with TLB on any machine,
not only on the machine it was created?

Thank you
Al

Mattias Sjögren
7/13/2006 9:53:01 PM
[quoted text, click to view]

Teh assembly must be located somewhere the runtime will look for it
(the GAC, the application directory) or you must register it with the
/codebase flag.


Mattias

--
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
AddThis Social Bookmark Button