C# and ActiveX DLLs
by
Anand
Narayanaswamy
As you know
with Visual Basic 6.0, it's possible to develop a COM server and implement it
in a Visual Basic client program. But this is being done by using Visual Basic.
You may wonder about the idea of calling this DLL in a C# Application. Well,
the C# language provides a way to call this COM server in a program. When we
compile a C# program, Intermediate Language is generated and it is called as
Managed Code. A Visual Basic 6.0 DLL is Unmanaged, meaning it is not generated
by the Common Language Runtime, but we can make this VB DLL interoperate with
C#, by converting it into a .NET compatible version. The following example
shows how to create a simple server by using Visual Basic 6.0 and implementing
it in a C# client program.
Creating an ActiveX DLL using
Visual
Basic 6.0
-
Fire up Visual Basic and select
ActiveX DLL Icon from the New Project dialog box.
-
Change the class name to
something meaningful like “Our_csharp”
-
Now supply the following code:
Public Function Show()
MsgBox ("Message box created by using Visual Basic")
End Function
-
For creating a function, you
can use Tools | Add procedure menu.
-
Save the project by supplying
relevant class and project names.
-
Change the Project name and
Description by selecting Project | Properties menu.
-
Set the Binary Compatibility
from the components tab of the above menu. This will not create separate GUID
upon each compilation.
-
Finally create your DLL by
selecting File | Make CsharpStation.dll. This is the name by which you save
your VB project.
-
That’s all. Your DLL is now
ready to use in a C# program.
It is not
possible for a C# program to communicate with a VB DLL without converting it
into a .NET equivalent. For doing so .NET SDK provides a tool called
tlbimp. It stands for Type Library Import and converts your
DLL to its equivalent .NET Assembly. For the above project, supply the
following command after properly setting the Environment Variables:
tlbimp
CsharpStation.dll /out:Csharp.dll
A new .NET
compatible file called Csharp.dll will
be placed in the appropriate directory. Type in the following C# client program
and execute as usual:
using Csharp;
using System;
public class Csharpapply {
public static void
main() {
Our_csharp c = new
Our_csharp();
s.Show();
}
}
Upon
execution, you can be able to see the message box from our VB DLL.
Notes:
If you are
using Visual Studio. NET, then you can refer the DLL from
Project | Add Reference | COM Tab.
Select your DLL by using the browse button. This will add reference to your
project. After adding a reference copy the above code and execute.
.NET SDK users
have to run a batch file named corvars.bat
before attempting compilation. This batch file is included with the SDK and
located in the bin directory.
About the Author
Anand
Narayanaswamy is a graduate of the University of Kerala. He is currently
working as an instructor in a institution affiliated with Manipal Academy of
Higher Education at Thiruvananthapuram, Kerala State, India. He has over 2+
years of experience in the following skills: Java, JavaScript, Visual Basic,
ASP, XML, Microsoft FrontPage, HTML, Microsoft Visual Interdev, NT
Server Administration, SQL Server.
Currently
he's exploring the possibilities and features of C# and related .Net
Technologies.
He
also runs http://www.learnxpress.com.