views:

187

answers:

4

Is it possible to use a VB6 class in C#?

+1  A: 

Sure, you just need to make it a COM object.

Otávio Décio
+1  A: 

You can use a compiled VB6 dll in a C# program by using COM Interop.

http://stackoverflow.com/questions/tagged/interop

Jason
+7  A: 

I think you should just be able to add the library that contains your VB6 type as a reference in your C# project. Visual Studio will create an Interop Assembly on the fly, and you'll get access to all of the types in the VB6 library via Runtime Callable Wrappers.

The tool that creates the Interop Assembly is TLBIMP.EXE, and you can run this yourself if you want more control over the process, eg. if you want to create a Primary Interop Assembly that might be shared by multiple managed components.

Wayne
w.r.t "the library", you can browse to a VB6 ActiveX EXE or class-bearing DLL and add it as a reference. The Interop Assembly will be automagically created for you.
Bob Denny
@ bob denny. Its not always that easy, the VS IDE chooses an option that makes working with complex data structures that have arrays difficult, if not impossible. Its better to use tlbimp unless you have very, very simple inputs and outputs.
Steve
@Steve Interesting. Can you give more details about this problem? A link would be useful.
MarkJ
+4  A: 

As @Wayne states in his post (+1) it is absolutely possible.

I would go for a rewrite of your VB6 class:
If you have the VB6 source and the funding, I would recommend you to rewrite the class in C#.
Although VB6 may live forever :
Current support Statement for Visual Basic 6.0

Kb