Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10751
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-17 21:01
文章分类

全部博文(11)

文章存档

2015年(11)

我的朋友
最近访客

分类: C/C++

2015-02-08 12:22:32

  1. VC++6.0中编写DLL详细步骤及其使用  
  2. 一、  编写DLL  
  3. 1、  创建DLL  
  4. 1.1、    File?New?Projects?Win32 Dynamic-Link Library; 在Project中输入名字MyDll,如下图:  
  5.    
  6. 1.2、    File?New?Files?C++ Source File, 在File中输入:MyDll.cpp如下图:  
  7.    
  8. 1.3、    File?New?Files?C/C++ Header File,在File中输入MyDll.h  
  9.    
  10. 1.4、    打开MyDll.h文件,输入一下内容:  
  11. #ifndef _MYDLL_H_  
  12. #define _MYDLL_H_  
  13.   
  14. extern "C" _declspec (dllexport) int Max(int a, int b);  
  15.   
  16.     #endif  
  17. 如下图:  
  18.    
  19.   
  20. 1.5、    打开MyDll.cpp,输入一下内容:  
  21. #include "MyDll.h"  
  22.   
  23. int Max(int a , int b)  
  24. {  
  25.     if (a >= b)   
  26.     {  
  27.         return a ;  
  28.     }  
  29.     else  
  30.     {  
  31.         return b ;  
  32.     }  
  33. }  
  34.   
  35. 如下图:  
  36.    
  37. 1.6、    在项目上右键, build ;结果如下:  
  38.    
  39. 二、  使用DLL  
  40. 1、  File?New?Projects?Win32 Application, 在Project Name中输入UseMyDll,如下图:  
  41.    
  42. 2、  创建 UseMyDll.cpp 、UseMyDll.h ;如下:  
  43.    
  44.    
  45. 3、  UseMyDll.h  
  46.   
  47. #ifndef _USEMYDLL_H_  
  48. #define _USEMYDLL_H_  
  49.     typedef int(*pMax) (int a, int b) ;//定义指向和dll中相同的函数原型指针  
  50.   
  51.     #endif  
  52. 4、  UseMyDll.CPP  
  53. #include <stdio.h>  
  54. #include <iostream.h>  
  55. #include <windows.h>  
  56. #include "UseMyDll.h"  
  57.   
  58. int main(void)  
  59. {  
  60.     HINSTANCE hdll;  
  61.     pMax max ;    
  62.   
  63.     hdll = LoadLibrary("../../MyDll/Debug/MyDll.dll") ;  
  64.   
  65.     if (hdll == NULL){  
  66.         printf("can not find dll file.") ;  
  67.         return 1 ;  
  68.     }  
  69.   
  70.     max =(pMax)GetProcAddress(hdll, "Max") ;  
  71.     if (max == NULL)  
  72.     {  
  73.         printf("can not find the Max function.");  
  74.         return 1 ;  
  75.     }  
  76.   
  77.      int ret = max(1, 1255) ;  
  78.      printf("比较结果:%d\n", ret) ;  
  79.   
  80.      FreeLibrary(hdll) ;  
  81.   
  82.     return 0 ;  
  83.     }  
  84. 5、  编译,运行UseMyDll ,ok。  
  85.   
  86.    
  87.   
  88. Linking...  
  89. LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16  
  90. Debug/UseMyDll.exe : fatal error LNK1120: 1 unresolved externals  
  91. Error executing link.exe.  
  92.   
  93.   
  94. 解决:   
  95. Project?Setting?Link?Project Options中修改:  
  96. subsystem: windows ?  subsystem: console;
阅读(394) | 评论(0) | 转发(0) |
0

上一篇:Linux下C语言学习指南

下一篇:没有了

给主人留下些什么吧!~~