Introduction
After spending some time trying to implement this simple task, I started to search similar code examples over the Internet. I was really very surprised when found that all examples were slightly different from what I needed. Finally, I realized that there is no (at least spending 30 min in the net) easy-to-use example, that�s why I decided to write this article.
Assuming that you already know what a DLL is, let's begin with creating a simple one.
- Start Visual Studio .NET.
- Go to File->New->Project.
- Select Visual C++ Project, and from the �Templates�, select �Win32 Project�.
- Give the name to your project. This will be the name of your final DLL (in my case: TestLib).
- Press OK.
- Select DLL from �Application Type� (�Application Settings� tab).
- Check �Empty Project� (we need to create our project from scratch, right?), and press Finish.
OK, now we should attach an empty source file to our blank project.
- Start Solution Explorer (if it�s not displayed).
- Right click to the �Source Files�, Add->Add New Item then select �C++ File� and give the name to it.
- Press �Open�.
In the opened window, enter the following code:
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf ("Hello from DLL !\n");
}
}
Please note that __declspec(dllexport)
is an obligatory prefix which makes DLL functions available from an external application.
extern �C�
(with brackets) is also very important, it shows that all code within brackets is available from �outside�. Although code will compile even without this statement, during runtime, you�ll get a very unpleasant error. So, do not forget to include it.
Build this application and your DLL will be ready-to-use.
Now it�s time to create an application which will use our DLL, as the main title explains. We will create this type of application using Microsoft�s C#.
Creating a simple C# application:
- Start Visual Studio .NET.
- Go to File->New->Project.
- Select Visual C# Project. From the �Templates�, you can either select �Console Application�, or an �Empty Project� just like it was described above.
- Give the name to your application.
- Press OK.
Into the specified class, insert the following two lines:
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL ();
In C#, keyword extern
indicates that the method is implemented externally.
Your code should look something like this:
using System;
using System.Runtime.InteropServices;
class HelloWorld
{
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL ();
static void Main ()
{
Console.WriteLine ("This is C# program");
DisplayHelloFromDLL ();
}
}
Please, note that System.Runtime.InteropServices
is required for operations with the DLL.
According to MSDN:
�The System.Runtime.InteropServices
namespace provides a collection of classes useful for accessing COM objects, and native APIs from .NET�
OK, now build this application, and then copy the previously built DLL into the Debug/Release directory of the current application. The DLL should be in the same directory as your main application.
Now start an application. If everything you�ve made was correct, you should get something like this:
That�s all, really simple isn�t it?