Windows客户端开发

程序启动弹框side-by-side找不到dll的问题

2019-07-05  本文已影响3人  mercurygear

一般这种情况都是因为程序是用vc2005或vc2008构建的,通过manifest设置来配置依赖。
出现这种弹框,大部分情况是因为运行时库或atl等其他系统提供的库没找到导致的,但是是因为那个dll依赖没找到,弹框信息一般看不出来。
这时,我们可以通过系统提供的 sxstrace命令来进行分析。

  1. 首先使用管理员权限打开命令行, 启用sxs加载监控,如:
    sxstrace trace -logfile:C:/trace.dat
  2. 接着,我们启动程序,触发弹框
  3. 命令行enter停止sxs监控,此时c盘下已有记录到的sxs日志文件trace.dat了,但这个文件是二进制的,无法直接查看。
  4. 要用命令把日志转成文本格式,如下:
    sxstrace parse -logfile:C:/trace.dat -outfile:C:/trace.log
  5. 如果是sxs的错误,那么trace.log里就会有相关的side-by-side的整个查找和加载日志,一般都可以定位到是哪个dll的依赖没有找到而导致弹框的,进而再找相关的解决方案。
上一篇下一篇

猜你喜欢

热点阅读