Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)
Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去。这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要。很久以前写过一篇关于Qt程序安装包制作的博客,里面介绍了Dependency Walker这个小工具。但是实际操作起来并不理想,因为Dependency Walker将exe文件依赖的所有动态库以及动态库所依赖的动态库都列出来了。看得你一脸懵逼:
你很难分清楚:倒底哪些DLL是需要打包的,哪些DLL是系统自带的。而作为打包过程中的一个小步骤,我根本不需要知道这么多信息。这个时候,我们需要一个更加简洁明了的工具。dumpbin就是今天要介绍的主角。
二、使用
dumpbin是随Visual Studio一起发布的,在Visual Studio的“本机工具命令行”中就可以直接使用。使用的第一步就是打开Visual Studio的“本机工具命令行”:
这里我选择的是“VS2015 X64本机工具命令提示符”。命令行窗口打开后直接进入到工程目录,输入命令“dumpbin /IMPORTS ReplaceAETemplate.exe > output.txt”:
Duang~~~,所有依赖的DLL项都保存到output.txt里面去了。打开瞧瞧输出内容:
依赖的动态库一项项的非常清晰明了。当然,里面也会列出一些系统的动态库。这些系统动态库在系统安装时就有了,所以不用打包进去。当然就算打包进去也不会有什么害处。这个命令再配合everything这个小工具查找依赖的DLL,简直不要太爽:
三、小结
dumpbin的IMPORTS参数是用来查看程序依赖的其他动态库的,这对于可执行程序exe和动态链接库DLL都是适用的。EXPORTS则适用于DLL查看其导出的函数接口:
结果照样重定位到output.txt中去了。这是因为如果直接在命令行中输出,前面的内容可能会被截断,导致内容看不完整。
从上面红框中可以看出,UniversalBlender.dll这个动态链接库导出了这么一些函数:capabilityAssessment, initializeDevice, runImageBlender等。
http://www.cnblogs.com/csuftzzk/p/windows_application_distribution.html
最新文章
- 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集
- mac搭建本地svn
- Centos安装Memcached和(Nginx)Memcache扩展详细教程
- logstash json和rubydebug 第次重启logstash都会把所有的日志读完 而不是只读入新输入的内容
- Android Studio 常见问题之Rendering Problems
- [系统设计/开发] APP密钥签发服务器
- 自定义强大的C#网络操作基础类(NetHelper)
- 树形遍历(java)---孩子双亲表示法
- rsyslog 同时发生nginx 访问日志和错误日志
- android欢迎页源码
- 使用VLC Activex插件做网页版视频播放器
- npm install --save 、--save-dev 、-D、-S 的区别
- 【转载】ARCHIVE_LAG_TARGET参数的作用(定时切换redo)
- Asp.net MVC 中Ajax的使用
- SQL记录-小表join大表查询例子
- C++ Leetcode Median of Two Sorted Arrays
- scrapy爬虫的编写步骤
- Luogu P1318 积水面积
- php开启mbstring扩展并设置支持utf-8编码
- PHP-007(转)
热门文章
- Size Balanced Tree(SBT树)整理
- oracle 重置序列从指定数字开始的方法详解
- 微擎 plugin 时间插件 图片上传插件不显示 报错 影响下面执行
- [Javascript] Combine Objects with Object.assign and Lodash merge
- Struts2之配置使用
- 机器学习 Softmax classifier (一个隐含层)
- HDoj-1874-畅通project续-Dijkstra算法
- 自己动手写shell命令之ls
- tensorflow 的版本差异与变化
- 【codeforces 777C】 Alyona and Spreadsheet