在.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了。
转载于:https://blog.51cto.com/allenfu/663736