、张念
不忘初心,方得始终

动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,DLL函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLL函数的另一拷贝装入内存。

 

一.新建工程(Win32控制台项目)->选择dll -> 空项目

 

二. 添加新建项  选择头文件->MathDLL.h   再次添加新建项  选择cpp文件->Math.cpp(最好是在头文件右键和源文件右键分别添加)

 

三.  下面开始编写代码   

MathDLL.h:

 
 在CODE上查看代码片派生到我的代码片
  1. #ifndef _MATH_DEFINE  
  2. #define _MATH_DEFINE  
  3.   
  4.   
  5. #ifndef MATH_EXPORT   
  6. #define MATH_API _declspec(dllexport)  
  7. #else  
  8. #define MATH_API _declspec(dllimport)  
  9. #endif  
  10.   
  11. extern "C" {  
  12.     MATH_API int Add(int para1,int para2);  
  13.     MATH_API int Max(int para1,int para2);  
  14. }  
  15.   
  16.   
  17. #endif  


 这里需要注意MAX_EXPORT,因为是要设置dll导出函数,所以要选择dllexport,确保工程->属性->C/C++->预处理器里面有这个宏定义,不然就变成了dll导入了

 

 

MathDLL.CPP:

 

 

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include "MathDLL.h"  
  2.   
  3. int Add(int para1,int para2)  
  4. {  
  5.     return para1+para2;  
  6. }  
  7.   
  8. int Max(int para1,int para2)  
  9. {  
  10.     return para1>para2?para1:para2;  
  11. }  


 重新生成解决方案,就能看见工程下面生成了*.lib文件和*.dll文件了

 

 

完成

posted on 2017-02-16 09:01  、张念  阅读(2983)  评论(0编辑  收藏  举报