C#工程调用外部的DLL文件
2011-09-13 22:46
387 查看
在.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了。
本文出自 “成功是一种习惯” 博客,请务必保留此出处http://allenfu.blog.51cto.com/3555219/663736
静态链接库是在程序编译的时候静态的链接到程序中去的,这样编译完后文件体积变大了。
动态链接库是程序在运行的时候动态的把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了。
本文出自 “成功是一种习惯” 博客,请务必保留此出处http://allenfu.blog.51cto.com/3555219/663736
相关文章推荐
- C#动态调用外部程序集(该程序集在dll文件中)
- C#下开发及调用dll文件
- C#实现反射调用动态加载的DLL文件中的方法
- C#实现反射调用动态加载的DLL文件中的方法
- C++工程调用c#的dll
- c#调用c++写成的dll文件
- C#调用外部可执行exe文件
- C# 调用外部dll
- 通过COM组件方式实现java调用C#写的DLL文件
- 在VS2010上使用C#调用非托管C++生成opencv代码的DLL文件
- 使用C#制作简单dll文件,并测试调用
- C#调用C++写的dll文件出错问题msvcr100.dll
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
- c#调用c++写成的dll文件,返回char*,返回数组,用ref接收,byte[] (zz)
- C#调用本地动态链接库时,根据x86或x64自动选择相应的动态链接库dll文件
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
- 在非托管的 VC++2005 中调用托管的 C# DLL 文件
- C#调用DLL文件时参数对应表
- C#调用动态unlha32.dll解压Lha后缀的打包文件分享
- jar包调用dll、lib等外部库文件解决办法