应用程序(dll、exe)在编译的时候默认嵌入了清单文件manifest,来帮助确认程序运行时依赖的运行时库的版本。生成的清单文件myexe.exe.intermediate.manifest嵌入到myexe.exe文件末尾,可通过文本编辑器查看。
当编译时关闭了嵌入清单文件,程序运行前需要将清单文件拷贝到应用程序目录。需要在vs工程配置中生成清单文件、嵌入清单文件。
程序依赖的运行时库放在目录 c:\windows\winsxs\ 下。
应用程序配置错误,可以利用事件查看器或sxstrace工具帮助定位问题。
1. sxstrace trace -logfile:t.etl //按Enter停止追踪
2. sxstrace parse -logfile:t.etl -outfile:o.txt //输出可读性的诊断报告
注意在编译debug版时,选择运行库版本设置MD,嵌入清单文件包含运行时库的debug和release版,导致应用程序无法启动;可以通过删除预定义宏_DEBUG,只保留release配置解决。