循序渐进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 阅读(256) 评论(0) 编辑 收藏 举报