1、运行、调试时出现程序启动时报错,提示出现错误无法启动。
2、程序执行数据库查询语句时直接跳过,查询函数调用时断点也无法中断。并且无执行结果。
其实出现这样的原因最主要是我们部署的程序缺少一些必要的运行库(注意库的版本,同样的库如果版本不一致也可能出现题)。
本文就是通过Depend工具来分析程序所需的依赖库。Depend工具包含X86和X64两个版本,用户可以根据实际情况进行选择使用对应的版本。笔试在写这篇文章时使用的 *** 作系统时win7,在选择Depend工具版本时选择的是depends22_x64。
1、打开depends22_x64文件夹,如下图:
2、运行depends.exe工具,如下图:
3、本文选择进行HyExchangeManager.exe分析,如下图:
有图分析可以知道运行该程序锁需要依赖的库为:mysqlcppconn.dll
在实际开发阶段大家一般都不会忘记添加mysqlcppconn.dll,而容易忽略mysqlcppconn.dll所需要的依赖库:libmysql.dll、msvcp90.dll(9.0版本)、msvcr90.dll(9.0版本)
4、将程序依赖的库添加到对应的文件夹下运行就可以觉得上面2种现象出现的问题。
VC所带的Depends软件,该软件在VC6安装目录下的tools文件夹里面 。D:\Microsoft Visual Studio\Common\Tools,直接双击执行,然后打开exe文件即可。
Depends.exe 是用来反编译VC程序的工具,可以查看PE模块的导入模块以及导入和导出的函数,以及动态剖析PE模块的依赖性和解析C++的函数名称,可分析dll和exe所依赖的dll。可以看到dll以及dll的函数,可以查看导入导出函数。
这是个MS C++运行时库的问题。 如果一个软件/程序用微软的VS编译的话,默认就是依赖这个库的。可能的原因:
1. 你的软件不是安装版,所以软件默认启用系统目录下的运行时库,不兼容。找个安装版。
2. 软件本身有问题,我看你是Wdinows Media Player ? (wmp ?) 换个替代的吧。
3. 找到对应的MS C++运行库,可以用depends 软件来看这个软件依赖那个运行库。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)