http://www.codeproject.com/csharp/UseCDLLlibinCS.asp
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.
OK, now we should attach an empty source file to our blank project.
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#.
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; // DLL support
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?
Hi, My name is Vladimir. I'm 23. I graduated from Tbilisi State University with BS Degree in Physics. (It's wrong to think that physicists aren't good enough for software development and programming...it's a common misconception, right ?) I'm Brainbench C and Brainbench C++ Fundamentals certified programmer. My interests range from physics to programming and electronics. Currently, I work on Microchip PIC applications, where as you may know, programming is a necessity. If you have any questions or comments feel free to contact me at: [email protected] Click here to view Vladimir Tskhvaradze's online profile. |