关闭

如何建立DLL

标签: dll分析
142人阅读 评论(0) 收藏 举报
分类:

动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,DLL函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLL函数的另一拷贝装入内存。


一.新建工程(Win32控制台项目)->选择dll -> 空项目



二. 添加新建项  选择头文件->MathDLL.h   再次添加新建项  选择cpp文件->Math.cpp(最好是在头文件右键和源文件右键分别添加)



三.  下面开始编写代码   

MathDLL.h:

#ifndef _MATH_DEFINE
#define _MATH_DEFINE


#ifndef MATH_EXPORT 
#define MATH_API _declspec(dllexport)
#else
#define MATH_API _declspec(dllimport)
#endif

extern "C" {
	MATH_API int Add(int para1,int para2);
	MATH_API int Max(int para1,int para2);
}


#endif

 这里需要注意MAX_EXPORT,因为是要设置dll导出函数,所以要选择dllexport,确保工程->属性->C/C++->预处理器里面有这个宏定义,不然就变成了dll导入了


MathDLL.CPP:


#include "MathDLL.h"

int Add(int para1,int para2)
{
	return para1+para2;
}

int Max(int para1,int para2)
{
	return para1>para2?para1:para2;
}

 重新生成解决方案,就能看见工程下面生成了*.lib文件和*.dll文件了



完成



1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

[教程]DLL注入的方法及通讯[2009-8-14]

这是当年加入“广海小组”时的作品,现在回味当时做了很多原创教程也挺有意思,摘录几个过来,留个纪念吧。 ================================================...
  • x1234521
  • x1234521
  • 2015-08-24 11:43
  • 915

如何创建dll工程

下面介绍如何创建一个dll项目。 我们自己写的类或函数,都可以导出成一个dll供他人使用,比如自己写的一个File操作类或加载某种格式文件的类等。 首先创建一个dll项目: 我们还是在前面创建的解决方...
  • lp310018931
  • lp310018931
  • 2015-11-10 22:42
  • 2849

VS2008 创建DLL和调用DLL

隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中。隐式链接必须的文件:lib . 显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作...
  • CSDNwei
  • CSDNwei
  • 2016-07-05 17:26
  • 1331

VS2012下创建和使用DLL (C++)

首先,我们需要先写一个程序来生成一个供我们调用的DLL文件,在VS2012开发环境下点击FILE->NEW->Project选择Visual C++下的Win32 Project,给项目起个名字,就叫...
  • fangwei1110
  • fangwei1110
  • 2014-08-05 16:30
  • 998

创建一个MFC动态链接库

还没好好的学习一下MFC,之前学过一段时间的QT,现在发现MFC与QT其实很相似,都很详细的提供了界面库,可能在具体的细节方面有不同吧,等着去发现。 一、创建DLL文件 1、新建工程文件如下: ...
  • luckywang1103
  • luckywang1103
  • 2013-10-05 22:25
  • 4784

用VC++ 6.0编写和使用动态链接库

首先利用VC++新建一个Win32 Dynamic-Link
  • g975291783
  • g975291783
  • 2014-08-27 15:29
  • 2006

Windows下VS2013创建与使用动态链接库(.dll)

**一、创建动态链接库文件** 1、打开VS2013,选择文件,新建工程 2、选择新建W32控制台应用程序,这里将工程名改为makeDLL 3、在应用程序类型中选择DLL,点击完成 4、完成以...
  • LZH2912
  • LZH2912
  • 2017-04-01 17:27
  • 2002

Dll制作与使用教程一

被dll折腾了很长一段时间,现在终于清楚了,现把dll的编写和使用方法进行梳理一下,分享给大家,也方便自己以后随时查询。 一. dll为什么会出现 我们在编写好一个系统软件后,有时需要更新该软件的某一...
  • EnglishGe
  • EnglishGe
  • 2015-11-12 10:01
  • 3917

DLL注入--设置消息钩子

通过设置消息钩子,达到和dll注入相同的目的,但这个方法与其他DLL注入方法又不一样,它不会把自己的DLL加载到目标进程,所以也就实现不来DLL的隐藏,这样很容易被杀软KILL掉,亲测360秒杀,但实...
  • qq_20977145
  • qq_20977145
  • 2016-06-27 17:59
  • 1774

VS2010创建并使用DLL

一、为什么需要dll 代码复用是提高软件开发 效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架, 如...
  • u014015972
  • u014015972
  • 2015-08-13 17:01
  • 3339
    个人资料
    • 访问:55405次
    • 积分:1154
    • 等级:
    • 排名:千里之外
    • 原创:57篇
    • 转载:30篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论