滴水逆向——VS2017编译&调用DLL

I.静态链接库

1.创建静态链接库:        
a.在VC6中创建项目:Win32 Static Library    
b.在项目中创建两个文件:xxx.h 和 xxx.cpp    
  
                                                           
c.编译       

2.使用静态链接库:       

  方式一:        
  将xxx.h 和 xxx.lib复制到要使用的项目中   
  在需要使用的文件中包含:#include "xxx.h"   
  在需要使用的文件中包含:#pragma comment(lib, "xxx.lib")
  方式二:        
  将xxx.h 和 xxx.lib复制到要使用的项目中   
  在需要使用的文件中包含:#include "xxx.h"   

3.静态链接库缺点:

使用静态链接生成的可执行文件体积较大,造成浪费
我们常用的printf、memcpy、strcpy等就来自这种静态库

Ⅱ.DLL

1.创建DLL                      

a.源文件中:  

b.头文件中   :


              

说明:               

1)extern 表示这是个全局函数,可以供各个其他的函数调用;         

2)"C" 按照C语言的方式进行编译、链接    
        __declspec(dllexport)告诉编译器此函数为导出函数;   
                       

2.使用DLL              

方式一:隐式连接      

步骤1:将 *.dll  *.lib 放到工程目录下面   

步骤2:将 #pragma comment(lib,"DLL名.lib") 添加到调用文件中 

步骤3:加入函数的声明     

extern "C" __declspec(dllimport) __stdcall int Plus (int x,int y);    
extern "C" __declspec(dllimport) __stdcall int Sub (int x,int y);  
extern "C" __declspec(dllimport) __stdcall int Mul (int x,int y);  
extern "C" __declspec(dllimport) __stdcall int Div (int x,int y);        

说明:       

__declspec(dllimport)告诉编译器此函数为导入函数;             

方式二:显示链接              

步骤1: //定义函数指针      
 typedef int (__stdcall *lpPlus)(int,int);   
 typedef int (__stdcall *lpSub)(int,int);   
 typedef int (__stdcall *lpMul)(int,int);   
 typedef int (__stdcall *lpDiv)(int,int);          

步骤2:  //声明函数指针变量     
 lpPlus myPlus;      
 lpSub mySub;      
 lpMul myMul;      
 lpDiv myDiv;             

步骤3:  // //动态加载dll到内存中     
 HINSTANCE   hModule = LoadLibrary("DllDemo.dll");         

步骤4:  //获取函数地址      
 myPlus = (lpPlus)GetProcAddress(hModule,   "_Plus@8");  
 mySub = (lpSub)GetProcAddress(hModule,   "_Sub@8");  
 myMul = (lpMul)GetProcAddress(hModule,   "_Mul@8");  
 myDiv = (lpDiv)GetProcAddress(hModule,   "_Div@8"); 

步骤5: //调用函数  
 int a = myPlus(10,2);
 int b = mySub(10,2);
 int c = myMul(10,2);
 int d = myDiv(10,2);
 

Ⅲ.VS2017编译&调用DLL

VS2017编译DLL

1.创建一个新项目,点击动态链接库

 

2.添加头文件Dll1Test.h,并在源文件Dll1Test.cpp中写上自己要打包成Dll的函数

 

3.点击重新生成解决方案,并成功生成

 

4.点击Debug,里面即是所生成的.dll文件以及lib文件。至此,dll文件的创建已经完成

 

VS2017调用DLL

1.新建项目

2.把“Dll1Test.dll”、“Dll1Test.lib”和“Dll1Test.h”放到如图的文件夹里面

3.添加一个新建项“Dll1Use.cpp”,里面添加如下代码

4.添加" Dll1Test.lib"到资源文件

5.点击“重新生成解决方案”,成功。执行如下

 

 

 

发布了14 篇原创文章 · 获赞 2 · 访问量 416

猜你喜欢

转载自blog.csdn.net/z17805008775/article/details/105517600
今日推荐