当前位置: 首页 > news >正文

西双版纳建设厅网站广州免费推广网站建设

西双版纳建设厅网站,广州免费推广网站建设,wordpress 主题 自定义,站长工具 网站改版目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序#xff0c;查看库与库的依赖关系#xff0c;找出出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总#xff08;专栏文章列表查看库与库的依赖关系找出出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/125529931C软件分析工具从入门到精通案例集锦专栏文章正在更新中...https://blog.csdn.net/chenlycly/article/details/131405795C/C基础与进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.html开源组件及数据库技术专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_12458859.html网络编程与网络问题分享专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_2276111.html       安装了新版本的安装包之后启动程序时会报错导致程序启动失败。这是日常工作中比较常见的一类问题本文详细讲述如何使用PE信息查看工具和Dependency Walker工具去分析这类问题的完整过程给大家提供一个借鉴或参考。 1、问题说明 测试同事安装新版本的安装包之后一启动程序就会报错弹出如下的报错提示框 导致程序启动失败。提示无法在xxsysctrldll.dll库中找不到InitMtDsc接口这是一类比较常见的问题一般都是因为主程序中有dll库的版本不一致引起的。比如A.dll依赖了B.dll库出现接口找不到的问题可能的原因有 1B.dll中的function接口不存在或者已经被删除了。比如老版本的A.dll和新版本的B.dll混在一起使用老版本A.dll调用了function接口但该接口在新版本的B.dll中已经删除或者已经更改名称了所以会出现找不到接口的问题。比如新版本的A.dll和老版本的B.dll混在一起使用新版本的A.dll调用了新版本的B.dll中新增的接口但当前软件打包的还是老版本的B.dll所以程序运行时在老版本B.dll中找不到接口。2B.dll中的function接口参数修改了。C中支持函数重载函数名称一样但参数不一样在编译时默认情况下会对函数名称进行改编在生成的函数符号中融入了参数信息比如上面截图中的 ?lnitMtDscYAXGHZ。 在B.dll中的function接口还在但是参数修改了函数符号发生了变化所以找不到了。  在这里给大家重点推荐一下我的几个热门畅销专栏 专栏1该专栏订阅量接近350个有很强的实战参考价值广受好评专栏文章持续更新中预计更新到200篇以上 C软件调试与异常排查从入门到精通系列文章汇总https://blog.csdn.net/chenlycly/article/details/125529931 本专栏根据近几年C软件异常排查的项目实践系统地总结了引发C软件异常的常见原因以及排查C软件异常的常用思路与方法详细讲述了C软件的调试方法与手段以图文并茂的方式给出具体的实战问题分析实例带领大家逐步掌握C软件调试与异常排查的相关技术适合基础进阶和想做技术提升的相关C开发人员 专栏中的文章均是通过项目实战总结出来的通过项目实战积累了大量的异常排查素材和案例有很强的实战参考价值专栏文章还在持续更新中预计文章篇数能更新到200篇以上 专栏2  C/C基础与进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.html 以多年的开发实战为基础总结并讲解一些的C/C基础与进阶内容以图文并茂的方式对相关知识点进行详细地展开与阐述专栏涉及了C/C领域的多个方面的内容同时给出C/C及网络方面的常见笔试面试题并详细讲述Visual Studio常用调试手段与技巧 专栏3  开源组件及数据库技术https://blog.csdn.net/chenlycly/category_12458859.html 以多年的开发实战为基础分享一些开源组件及数据库技术  2、问题分析思路 对于上述这类问题基本就是库的版本不一致导致的具体是哪个库的版本有问题我们使用PE信息查看工具和Dependency Walker工具就能快速排查出来。 先使用Dependency Walker打开exe主程序查看库与库的依赖关系比如 确定问题出在哪些个库中同时可以进一步的确定是找不到库还是调用的接口在目标dll库中找不到亦或是要调用的接口在目标dll库中修改了参数。 然后使用PE信息查看工具打开出问题的dll库文件查看库文件的时间戳比如 即库文件二进制文件的编译生成时间这样我们就能确定到底是哪个库的版本不对了。 另外在这个分析过程中我们可能需要在svn或git上查看库文件的发布记录和相关模块开发维护团队确认库与库之间的版本对应关系。 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序查看库与库的依赖关系找出出问题的库 首先我们使用Dependency Walker打开软件的exe主程序查看库与库之间的依赖关系看看问题具体出在哪些库中。 Dependency Walker打开exe主程序后会以树状结构将exe主程序依赖的库以及这些库依赖的其他库展示出来。默认情况下会自动将树中的节点全部展开。 注意一下当前最新的Dependency Walker还是2016年的当运行在Win10等新的系统中时打开文件可能会比较慢甚至要等好几分钟才能打开完成。要稍微耐心等待一下。 在展开的树中节点太多除了软件的业务库还包含大量的Windows系统库为了方便查看我们可以将系统库的节点给折叠起来。这就要求我们要识别出来哪些库是系统库比如常见的user32.dll、ntdll.dll、kernel32.dll还有以API-MS-WIN开头的系统库 这对于经常搞Windows软件开发的人很简单但对于新手或者不熟悉Windows软件开发的人来说可能很难分辨 在Dependency Walker中如果库找不到或者库中的接口有问题问题节点前面会显示特别的异常图标 1在运行的机器中找不到某个库会在该库的节点前显示一个黄色的问号图标如下所示 这可能是打包软件时没有将程序依赖的库打包进安装包中。比如忘记将一个新增的dll库打包到安装包中、没有将运行时库打包到安装包中。注意不同版本的Visual Studio使用的运行时库名称是不一样的比如Visual Studio 2010的运行时库是msvcr100.dll和msvcp100.dllVisual Studio 2017的运行时库是msvcp140.dll、vcruntime140.dll和ucrtbase.dll不再有msvcr140.dll、新增了vcruntime140.dll和ucrtbase.dll。 使用Visual Studio编译出来的程序在打安装包时都需要把对应版本的运行时库打包进去。关于不同Visual Studio版本对应的运行时库的详细说明可以参见我的文章 使用Dependency Walker和Process Explorer排查程序启动时缺少ucrtbase.dll等运行时库以及报0xC000007B错误https://blog.csdn.net/chenlycly/article/details/131505299此外很多系统库节点前面也会显示一个黄色的问号图标这些系统库一般可以忽略掉不用管。2在某个库中找不到调用的接口会在对应的接口行前面显示一个红色的图标如下所示 可能这个接口在库中已经不存在了被删除了也可能是接口的参数修改了生成的函数符号变了。 在本案例中最开始启动程序报错的截图如下 从这个截图可以看出问题与xxsysctrldll.dll库有关。用Dependency Walker打开exe主程序后显示出问题的两个库的截图如下所示 首先看到xxsysctrldll.dll依赖了xxdscdll.dll之所以依赖肯定是xxsysctrldll.dll库中调用了xxdscdll.dll库中的接口。然后我们看到xxdscdll.dll节点前面有淡红色的异常图标所以我们点击xxdscdll.dll节点此时右边实现两块信息上面PI部分是依赖该库的xxsysctrldll.dll从该库中引入了哪些接口即xxsysctrldll.dll库中调用了xxdscdll.dll库中的那些接口下面的E部分是当前xxdscdll.dll库有哪些导出接口。 关于导出导入对于dll动态库本身接口是导出的是要提供给其他库调用的对于使用到该库的其他库需要引入当前库的接口然后调用这些接口的。一般可以使用#import导入dll库对应的.lib库比如#pragma comment( lib, winmm.lib ) 这个是在编译链接时会用到如果找不到调用的接口符号则会编译报错。接口的运行调用则时发生在程序运行阶段的。 看到导入列表中的接口?InitMtDscYAXGHZ这是经过编译器名称改编后的函数名称带了参数信息所在行前面显示了红色的图标应该是该接口符号在当前的xxdscdll.dll中没有。可以翻看下方的xxdscdll.dll的导出函数列表看看xxdscdll.dll有没有导出InitMtDsc接口。在xxdscdll.dll导出接口的列表中确实找到了InitMtDsc接口但包含了参数信息的改编后的名称是不一样的即?InitMtDscYAXGZ所以应该是该接口的参数修改了。 目前可以确定是xxdscdll.dll与xxsysctrldll.dll两个库不匹配但具体是哪个库有问题还是看这两个库的时间戳库的编译生成时间。 3.2、使用PE工具查看dll库的时间戳 此时我还要使用到PeViewer PE信息查看工具。打开PeViewer工具点击打开按钮找到xxdscdll.dll与xxsysctrldll.dll文件的路径打开文件查看到文件的时间戳点击左侧列表中的头部 - NT头 - 文件头右侧就会显示文件的时间戳 从上图中可以看到xxdscdll.dll库的时间戳为2023/12/07[04:29:53]xxsysctrldll.dll库的时间戳为2023/12/15[15:29:37]。  我这边经常使用的PE信息查看工具叫PeViewer以前排查问题时用该工具打开64位二进制文件发生了闪退。后来在网上搜到了MiTeC EXE Explorer工具这个工具兼容性比较好打开64位二进制文件没有问题。大家后面遇到问题时可以使用更强大的MiTeC EXE Explorer。 最近底层的组件有多个模块有改动12月15日有发布新库过来查看了svn上的发布记录 发布说明中提及到的发布模块中有提到xxdscdll模块和xxsysctrldll模块但实际上并没有发布库文件xxdscdll.dllxxsysctrldll.dll库文件发布过来了。所以结合上面的PE工具查看的时间戳xxsysctrldll.dll是最新版本但xxdscdll.dll是老版本。 那明明发布说明中指出要发布xxdscdll模块过来为啥没发布成功呢先到文件服务器上查看编译日志看看是不是xxdscdll模块代码编译失败了。经查看xxdscdll模块编译没有错误的文件有生成的。于是找了一下配置管理员他查看了一下发布模块配置发现了问题 在配置发布模块xxdsc的名称时错误地将xxdscdll.dll写成了xxdssdll.dll将dsc写成dss导致了自动执行发布脚本时没有拷贝xxdscdll.dll到指定产品的代码流上。 3.3、解决办法 所以在该问题场景中新版本的xxsysctrldll.dll使用了老版本的xxdscdll.dll新版本的xxsysctrldll.dll调用了新版本的xxdscdll.dll中的InitMtDsc接口在新版本的xxdscdll.dll中修改了InitMtDsc接口的参数即新版本的xxdscdll.dll调用了修改参数后的InitMtDsc接口所以在老版本的xxdscdll.dll中找不到修改参数后的InitMtDsc接口所以程序启动时弹出了文章最开始说到的错误提示框 解决办法很简单只需要将漏发的xxdscdll.dll文件发布过来就好了。 4、最后 本案例中详细介绍了如何使用PE信息查看工具与Dependency Walker去排查程序启动报错的问题希望能给大家提供一定的借鉴或参考。
http://www.pierceye.com/news/255622/

相关文章:

  • 网站建设与管理专业概述网站建设报价费用是多少
  • asp医院网站源码破解版北京企业做网站报价
  • 个人做电商网站赚钱吗门业网站模板
  • 企业产品微网站收费吗wordpress移服务器改域名
  • 原创文章网站网站建设团队介绍
  • WordPress建站详细过程安康建设网站
  • 仿视频网站开发wordpress下载文件
  • 专业的个人网站建设哪家建筑施工企业专职安全生产管理员
  • 企业网站模板php全球网站排名前100
  • 1688网站可以做全屏吗有哪些网站是织梦做的
  • vue2.0网站开发做网站没有成本的方法
  • 手机网站和app有什么区别流量对网站排名的影响因素
  • 北京全网营销推广公司网站建设以及seo
  • 免费html网站代码骨科医院网站模板
  • 华强方特网站开发辽宁工程技术大学电子信息网
  • 信誉好的网站建设案例微网站后台录入
  • 网站ui界面设计模板WordPress能连接支付端口吗
  • 网站建设与维护ppt模板下载昆明 网站搭建
  • 手机网站建设浩森宇特摄影作品投稿平台
  • 网站类网站开发犯罪吗肇东网站建设云聚达
  • 云南通耀建设工程有限公司网站少儿编程老师需要具备什么条件
  • 陕西交通建设集团蓝商分公司网站wordpress增加模板
  • 创建网站目录权限建网站域名注册后需要
  • 现在还有企业做网站的吗浏览器登录入口
  • 如何进行目的地网站建设阳江网站建设推广
  • 移动网站搭建如何做高并发网站的架构设计
  • 网站特效网网站制作出租
  • 公司商标设计logo图案优化专业的公司
  • 郑州网站设计见效快微信公众平台小程序入口
  • 自动化毕设题目网站开发自家电脑做网站服务器w7花生壳