循序渐进DLL编程(一)

   最近觉得DLL比较好玩,所以于是按下心来进行学习DLL技术,我们在windows平台中看到很多软件下面都有dll文件,类似在windows、system文件也是有很多这种文件,其实这是一种类似于exe为磁盘文件,

  DLL 全称是动态连接库文件,其中一种功能就是能减小应用程序的冗余性和复杂度,能提升整个应用程序的模块化,其实在运行的时候被系统加载到虚拟运行的空间,DLL中可以提供多种导出服务函数给外界提供函数,DLL可以有自己的数据段但是没有自己的堆栈段,使用调用它的堆栈模式,一个DLL模式中只有一个实例,高度实现功能的封装,基于DLL的编程的方式确实有很多,在本文中首先介绍的静态的连接方式

首先的DLL文件的编写

//hello.h
//本代码基于VS 2008
#pragma once
#define DLL_EXPORT __declspec(dllexport)
extern "C" DLL_EXPORT int Add(int a,int b); 
// hello.cpp
#include<iostream>
using namespace std;
#include"hello.h"

int Add(int a,int b)
{
return a+b;
}

然后DLL测试文件的编写

//testHello.h
#pragma once
#define DLL_EXPORT __declspec(dllexport)
extern "C" DLL_EXPORT int Add(int a,int b); 
//testHello.cpp
#include "testhello.h"
#pragma comment(lib,"..\\debug\\Dll.lib");
#include<iostream>
using namespace std;

int main ()
{

   int a=3;
   int b=5;
   cout<<"the result is "<<Add(a,b)<<endl;

   getchar();
    return 0;
}

通过上面的测试代码可以发现静态使用还是很方便的~~~

在上面的编程的思路主要分为以下几个步骤

1.是对库文件的编写

  1.1库文件.h的编写

    a)#pragma once  主要是用于防止重复编译

    其实这段代码可以用这种头文件的预编译来代替

    #ifndef XXX_H

    #define XXX_H

   #endif

   b) 宏定义

    #define DLL_EXPORT __declspec(dllexport)

   c)函数的声明

   extern "C" DLL_EXPORT  the funcction you define

1.2库文件.cpp

   实现在库头文件中你需要实现的函数功能

2.使用库文件程序的编写

  2.1使用库文件.h的编写

      主要是对于要使用的库中的函数的声明

  2.2使用库文件.cpp的编写

      直接使用在.h中声明的函数

 

posted on 2013-01-27 14:38  AAAAAApple  阅读(257)  评论(0编辑  收藏  举报

导航