在.NET编程中,我们会经常碰到要调用外部的DLL文件。首先,动态链接库文件(DLL)的格式其实和EXE文件相同,都是可执行的,不同的是EXE可单独运行,而DLL往往是供其他程序动态的调用,它不主动的执行任何代码。其次,链接库可分为两种:静态链接库和动态链接库。

静态链接库是在程序编译的时候静态的链接到程序中去的,这样编译完后文件体积变大了。

动态链接库是程序在运行的时候动态的把DLL中的函数链接到程序中执行,这样就不用在编译的时候链接文件了,因此节省了文件大小。

在.NET平台下C#如何调用DLL文件呢?首先我们构造一个自己的DLL文件。假设,我们已经有一个.h文件和.lib文件。

.h文件:

int add(int x,int y);

int minux(int x,int y);

构造DLL文件:

1.新建一个VC++ Class Library工程

2.添加2个头文件math.h,imath.h和cpp文件imath.cpp

math.h:

int add(int x,int y);

int minus(int x,int y);

imath.h:

extern "C"

{

        __declspec(dllexport) int Add(int x,int y);

        __declspec(dllexport) int Minus(int x,int y);

}

imath.cpp:

int Add(int x,int y)

{

        return add(x,y);

}

int Minus(int x,int y)

{

       return minus(x,y);

}

编译生成DLL文件imath.dll

3.在C#工程中调用imath.dll中的Add,Minus

C#调用外部DLL文件,需要使用using System.Runtime.InteropServices;导入命名空间

接着定义要调用到的函数:

[DllImport("imath.dll",EntryPoint="Add")]

private static extern int Add(int x,int y);

[DllImport("imath.dll",EntryPoint="Minus")]

private static extern int Minus(int x,int y);

至此以后就可以在需要调用Add和Minus的地方直接调用Add和Minus了。