VC++中Depends工具;Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口。

在VC6位于如下目录;

加载一个系统dll查看一下;出现下图错误提示;大致说...加载失败...循环依赖...;因为此dll又调用了其它dll;

左上角是Dll信息窗口,显示引用到的Dll模块,
右边第一个窗口是所选的Dll模块所使用的函数,
右边第二个窗口是所选Dll模块的所有的导出函数,
下面窗口是所有需要的Dll模块的属性,
右边两个窗口出现四个标签:序号,提示,函数,入口点;
如果导出是函数,那么出现函数名,如果导出的是序号,那么函数项就是N/A(无法显示)出现红色提示表示不正常,一般为没有该导出函数;

看一下系统自带的ICMP.dll;就是实现ping功能的那个;

在C++中有一种dll函数调用方式;就是通过LoadLibrary、 GetProcAddress,载入模块之后,获取函数地址,通过函数地址来调用函数;在安全类编程中会用到;

下面来看一下示例;获取user32中的MessageBox函数地址;

新建一个VC++ MFC工程;

CPP文件包含此句:#include <windows.h>
CPP文件头部添加:typedef void (*MYPROC)(LPTSTR);
在某个消息处理函数中,单击菜单或按钮,或对话框初始化消息;添加如下代码;显示载入DLL以后的DLL模块地址和MessageBoxA函数地址;

    HINSTANCE LibHandle;MYPROC ProcAdd;LibHandle = LoadLibrary("user32");CString temp_value1 = _T("");temp_value1.Format(_T("user32 LibHandle = 0X%x\n"), LibHandle);AfxMessageBox(temp_value1);ProcAdd=(MYPROC)GetProcAddress(LibHandle,"MessageBoxA");    CString temp_value2 = _T("");temp_value2.Format(_T("MessageBoxA = 0X%x\n"), ProcAdd);AfxMessageBox(temp_value2);

运行结果如下;环境是Win10,VC6;

也就是说载入uder32 DLL的基址在0x74ab0000;MessageBoxA函数地址在基址之后一些;

VC++中Depends工具的使用和DLL函数的动态调用方式示例相关推荐

  1. C++ DLL总结—静动态调用、导出类

    1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...

  2. java 项目加载dll文件,Java动态调用链接库dll文件

    Java动态调用链接库dll文件 Java动态调用链接库dll文件 因为项目需要,用到了java调用dll文件中的方法.写成dll文件大多是用C语言弄成的,对于我这个纯粹干java的人员来说,着实让我 ...

  3. js 调用c语言函数看,web前端:JS高级---函数中的this的指向,函数的不同调用方式...

    在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用.要善于利用函数,以减少重复编写程序段的工作量. 函数分为全局函数.全局静态函数;在类中还可以定义构造函数.析构函数.拷贝构造函数 ...

  4. java 动态调用函数_深入讲解Java语言中的函数动态调用方式

    相 信 有 不 少 人 使 用C 语 言 的 函 数 指 针 实 现 过 函 数 的 动 态 调 用. 适 当 地 运 用 函 数 动 态 调 用 功 能 不 仅 能 减 少 代 码 数 量, 而 且 ...

  5. VC中depends的用法

    Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口. ...

  6. Javascript中匿名函数的多种调用方式

    avascript中定义函数的方式有多种,函数直接量就是其中一种.如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数.好,看看匿名函数的如何被 ...

  7. tp5类的属性不存在_thinkPHP5.1框架中Request类四种调用方式示例

    本文实例讲述了thinkPHP5.1框架中Request类四种调用方式.分享给大家供大家参考,具体如下: 1. 传统调用 访问方式:http://127.0.0.1/demo/demo3/test?n ...

  8. 在python中get是什么意思_python get函数有什么作用?示例解析

    这篇文章之中我们来了解一下关于python字典之中的pythonget函数的相关知识,get函数是什么意思,他有什么作用都将会在接下来的文章之中得到解答. 描述 Python 字典(Dictionar ...

  9. php调用dll函数,[转载]matlab调用DLL中的函数

    首先,这种调用在 Matlab 的帮助文档中有说明.它的英文名称为: MATLAB Interface to Generic DLLs 从这个帮助文档,我们不难看出,整个过程为:加载 DLL ,调用相 ...

最新文章

  1. Jackson、FastJson快速入门(整合SpringMVC)
  2. .NET创建WebService服务简单的例子
  3. [CF]Round514
  4. Spark Streaming保存到HDFS目录中案例
  5. 英伟达显卡不同架构_求历代英伟达显卡架构名称
  6. IntelliJ IDEA 创建 Vue工程
  7. AndroidKK4.4 Power key电量屏幕时button light先亮LCD后亮的卡顿问题分析
  8. 基于jsp+mysql+Spring+SpringMVC+mybatis的高速公路收费管理系统
  9. 减去百分之二是怎么用计算机算,百分比换算公式(常见的百分率计算公式)
  10. 【云原生】SpringCloud系列之服务调用OpenFeign(日志配置、异常解码器、更改负载均衡策略、替换默认通信组件等)
  11. linux 删除swp文件,linux E325: 注意 发现交换文件 *.swp 解决方法
  12. 台式计算机有不有蓝牙,台式机没有蓝牙怎么办
  13. 小白求答疑,在vs连接数据库的一段配置代码有问题
  14. 企业级运维——Mysql主从复制(异步、半同步、全同步)
  15. MacbookPro使用小记
  16. win10如何新增ip地址
  17. NOTA-WL12,68Ga-NOTA-WL12一种基于肽的正电子发射断层扫描 (PET) 显像剂
  18. 拜日式精准引导词_在家练瑜伽,常用英文单词了解一下?(三)
  19. Android之使用SurfaceView制作简易写字板
  20. html中display属性含义,css中display是什么意思?

热门文章

  1. 自动装配——@Resource(JSR250)和@Inject(JSR330)---[java规范的注解]
  2. 用html和js写一个直接在页面运行js的页面
  3. coreldraw 复制填充渐变色
  4. Oracle 数据库用户锁定与解锁,用户锁定最大密码失败次数设置方法,ORA-28000: the account is locked问题解决方法
  5. Windows 技术篇-是否允许程序连接网络误操作解除方法,如何解除阻止程序连接网络,程序连接网络设置方法
  6. CTFshow php特性 web145
  7. CTFshow 命令执行 web38
  8. CodeForces 845C Two TVs
  9. C++中指针和引用的区别
  10. pytorch下载mnist超时解决方案