WEB开发网
开发学院软件开发C++ 利用VC++6.0的depends工具打开dll动态链接库文件及... 阅读

利用VC++6.0的depends工具打开dll动态链接库文件及函数封装

 2012-11-18 15:21:54 来源:WEB开发网   
核心提示: 如果熟悉windows的用户就会发现windows下有很多dll文件,但很多人不知道这些文件究竟是用来干什么的,利用VC++6.0的depends工具打开dll动态链接库文件及函数封装,为什么要做成dll文件,现在我就windows下的systems文件夹下的user32.dll文件,将我的程序进行封装,只提供相应的

 如果熟悉windows的用户就会发现windows下有很多dll文件,但很多人不知道这些文件究竟是用来干什么的,为什么要做成dll文件。现在我就windows下的systems文件夹下的user32.dll文件,利用VC++6.0的depends工具打开,截图为:

我们很容易发现,Function行都是我们开发用的API,也就是说微软通过将他们编写的函数放入一个dll文件中,而函数具体代码,我们是无法找到的,因为这是一个公司的核心竞争力所在,微软也不至于蠢到把windows开发代码给我们吧,那肯定是不现实的。
在这里我并不会对dll做详细的解析,我只想通过我的一个汉若塔程序,将我的程序进行封装,只提供相应的接口。
首先我们打开VC++6.0文件--新建--工程--Win32 Dynamic-Link Library
确定默认一个空的工程。
然后新建一个头文件hrt_t.h
包含代码:
#define INIT_STACK_SIZE 40
#define STACK_ADD 10
typedef struct
{
 int xu;       //  对应的盘子序数
 int zbj;        //  对应的纵坐标
}cun;
typedef struct   //  把位子放入栈中 线性表操作
{
  cun *top;
  cun *bottom;
 int stacksize;
} Sqstack;
再新建一个头文件hrt.h
代码为:
extern "C" void __declspec(dllexport) initstack(Sqstack &L);
extern "C" Status __declspec(dllexport) push(Sqstack&L,int xu,int zbj);
extern "C" Status __declspec(dllexport) pop(Sqstack&L,int&xu,int&zbj);
extern "C" Status __declspec(dllexport) emptystack(Sqstack L);
extern "C" Status __declspec(dllexport) gettop(Sqstack L,int&xu,int&zbj);
extern "C" void __declspec(dllexport) GotoConsoleXY(HANDLE hConsole,int x,int y);
extern "C" void __declspec(dllexport) gotoxy(int x,int y);
extern "C" void __declspec(dllexport) huatu(Sqstack&A,Sqstack&B,char(*b)[16],char(*a)[16],int e,int zbj,int l,int xu);
extern "C" void __declspec(dllexport) move(Sqstack&A,Sqstack&B,Sqstack&C,char(*b)[16],char(*a)[16],char x,char Y);
extern "C" void __declspec(dllexport) hrt(Sqstack &e,Sqstack &f,Sqstack &g,char (*b)[16],char (*a)[16],int n,char A,char B,char C);
之后新建一个资源文件hrt.cpp
代码为:
#include"t11.h"
#include"hrt_t.h"
#include"hrt.h"
#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
void initstack(Sqstack &L)       //  初始化栈操作
{
 L.bottom=(cun*)malloc(INIT_STACK_SIZE*sizeof(cun));
 if(!L.bottom)
 {
 printf("内存分配失败!!");
 exit(-1);
 }
 L.top=L.bottom;
   L.stacksize=INIT_STACK_SIZE;
}

1 2 3 4 5  下一页

Tags:利用 VC depends

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接