dll动态链接库简单入门
来源:互联网 发布:知乎怎样添加话题 编辑:程序博客网 时间:2024/06/05 11:38
总结windows系统中vs2008编译环境下,创建dll然后使用dll非常简单(代码量最少,让你知道哪些是必要的代码)的一次感性尝试。
dll定义:windows系统中用于实现函数共享的文件。文件内容是二进制代码,扩展名通常是.dll。
创建:
编译环境:vs2008英文版。
1.新建dll空工程:菜单file->new->project->visual c++->win32->win32 console application->填写dll工程名字myDll->OK->next->DLL->empty project->finish
2.新建dll工程的.cpp文件:在左侧solution explorer窗口下,右击source files->add->new item->visual c++->code->选c++ file(.cpp)->填写.cpp名字add->确认add->在add.cpp文件中定义add函数:
#include "myDll.h"int add(int a, int b){ return a + b; }
3.在左侧solution explorer窗口下,右击myDll工程名->properties->general->configuration type->static library(.lib)->确定。
//使用dll有两种方式,一是载入时动态链接,二是运行时动态链接,因为前者简单,所以采用前者。此时不生成myDll.dll,生成myDll.lib。
4.新建myDll.lib输入库的.h文件:在左侧solution explorer窗口下,右击header files->add->new item->visual c++->code->选header file(.h)->填写.h名字myDll->确认add->在myDll.h文件中声明add函数:
extern "C" _declspec(dllexport) int add(int a, int b);
//extern "C" 告诉编译器该函数按照C语言规范编译,并且动态链接时不用加函数名修饰符(如函数名前加下划线前缀),可以直接使用原函数名
//_declspec(dllexport)声明函数是导出函数
5.按F7编译。
使用:
1.新建测试空工程:在左侧solution explorer窗口下,右击solution 'myDll'->add->new project->visual c++->win32->win32 console application->填写测试工程名字test->OK->next->console application->empty project->finish
2.新建测试工程的.cpp文件:在左侧solution explorer窗口下,右击test工程的source files->add->new item->visual c++->code->选c++ file(.cpp)->填写.cpp名字test->确认add->在test.cpp文件中加入如下代码:
#include <iostream>#include "..\myDll\myDll.h" //包含dll的头文件#pragma comment(lib, "..\\Debug\\myDll.lib") //隐式链接using namespace std;int main(){ cout<<add(1,2); return 0;}
//使用方式一:载入时使用隐式动态链接,起始目录从工程当前目录开始。也可以在项目属性中设置库的显式动态链接。
//另一种使用方式是运行时使用动态链接(比较繁琐,见参考链接)
//动态链接.lib库文件和静态链接库文件不同,只存放dll的导出表,不含代码
3.在左侧solution explorer窗口下,右击test工程名->set as startup project->按ctrl+F5,dos窗口显示3.
参考:http://wenku.baidu.com/link?url=ZOI_xCuZODcRwqlYSb_UXfxhE9rB5shzFdmF6-hnFOXe30mo3yHTCs1yKiEgpWiZWX7i4I4tk7uLPNdvPmWBGvs956B7HtTyzZGT-XvTHYu
优点:1.节省内存,所有进程可以共享内存中加载的dll程序,也因此减少代码量。2.升级程序无需重新编译重新安装,只更换dll即可。3.可供多种编程语言使用。
补充阅读:所有Windows API函数都是以动态链接库形式提供。
0 0
- dll动态链接库简单入门
- dll入门简单实例(动态链接库)
- dll动态链接库编程入门1
- dll动态链接库入门2
- 动态链接库 简单的DLL (转载)
- 动态链接库(DLL)简单了解
- 动态链接库 (DLL)
- 动态链接库DLL
- 动态链接库DLL
- 动态链接库 dll
- DLL动态链接库
- DLL 动态链接库
- DLL(动态链接库)
- 动态链接库DLL
- DLL,动态链接库
- 动态链接库 DLL
- 动态链接库DLL
- 动态链接库 dll
- rfc959 FTP传输协议
- DOM理论知识
- Handler 的伪异步与真异步
- gcc下载
- 如何理解c和c++的复杂类型声明?
- dll动态链接库简单入门
- Reorder List
- Unity3D命令行Build
- display:table
- error C2146: 语法错误: 缺少“;”(在标识符“WINAPI”的前面) 及 “error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int” 解决方案
- 黑马程序员_Java多线程
- 关于*((volatile int*)0x0000xxxx)
- vs2013开发上位机软件和单片机通信
- hdu 1166 线段树之一