通常我们在Windows上使用微软的VC或VS平台开发软件。这会涉及到运行时库的选择(根据发布版本Debug/Release、ANSI/Unicode以及SingleThread/MultiThread选择不同的依赖类库),当使用MFC时还会涉及到MFC类库的连接问题(共享连接/静态连接)。

先需要了解VC中CRT,MFC的意思。CRT就是C Run-Time Library,C运行时库。MFC是Microsoft Foundation Class,微软基本类库。参见 http://www.pcw8510.com/?p=1285

http://www.cnblogs.com/chio/archive/2007/11/26/972152.html

不同版本的VS也使用了不同版本的运行时库以及MFC库。 所以某版本下不完善开发的项目转移到其他机器去运行或到其他版本的VS平台去编译运行时,可能会出问题。
比如标题中描述的这个具体问题,“ 应用程序无法正常启动0xc0150002 解决方案”!因为程序启动时并没有提示缺少某个DLL,或者其他具体信息,一开始似乎觉得无从下手。上网搜索查到对我有用的方案:

http://blog.csdn.net/debugconsole/article/details/7870015

http://lixinyiabc123.blog.163.com/blog/static/140977406201022803210261/

再看我依照这些资料分析问题的过程:

1,使用“我的电脑”->“管理”->“事件查看器"->“系统”,查看系统反馈信息。目测在XP下无具体信息

2,因为我在某台机子上可以正确运行(这一般需要知道程序原来是在哪个VS版本下开发的)。从VS平台下启动程序,会在输出栏显示程序启动的相关信息,比如加载资源,DLL之类的。我对比了不同版本下启动的详细信息,结果如下:

正常启动的版本:
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\Campic.exe”,已加载符号。
“Campic.exe”: 已加载“C:\WINDOWS\system32\ntdll.dll”
“Campic.exe”: 已加载“C:\Program Files\AVAST Software\Avast\snxhk.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\kernel32.dll”
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\cximaged.dll”
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_c94a3a24\mfc90d.dll”
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\user32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\gdi32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\shlwapi.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\advapi32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\rpcrt4.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\secur32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\msvcrt.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\comctl32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\msimg32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\oleaut32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\ole32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\ws2_32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\ws2help.dll”
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\avcodec-53.dll”,未使用调试信息生成二进制文件。
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\avutil-51.dll”,未使用调试信息生成二进制文件。
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\swscale-2.dll”,未使用调试信息生成二进制文件。
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\avformat-53.dll”,未使用调试信息生成二进制文件。
“Campic.exe”: 已加载“C:\WINDOWS\system32\avifil32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\winmm.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\msacm32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\msvfw32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\shell32.dll”
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\hsPlayer.dll”,已加载符号。
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\hsCamera.dll”,已加载符号。
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\cximagedu.dll”
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_c94a3a24\mfc90ud.dll”
“Campic.exe”: 已加载“E:\wsc\swDevBoard\Campic\Debug\PR_Dll.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\imm32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\lpk.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\usp10.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\uxtheme.dll”
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.MFCLOC_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_15fc9313\mfc90chs.dll”,未使用调试信息生成二进制文件。
“Campic.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\MSCTF.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\version.dll”
“Campic.exe”: 已卸载“C:\WINDOWS\system32\version.dll”
“Campic.exe”: 已加载“C:\WINDOWS\system32\msctfime.ime”
Warning: initial dialog data is out of range.

无法启动的版本:
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\Campic.exe”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\kernel32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\KernelBase.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\cximaged.dll”。无法查找或打开 PDB 文件。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\ws2_32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\avcodec-53.dll”。模块已生成,不包含符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\swscale-2.dll”。模块已生成,不包含符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\avformat-53.dll”。模块已生成,不包含符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\avutil-51.dll”。模块已生成,不包含符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\hsCamera.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\hsPlayer.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\mfc110d.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\msvcr110d.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\user32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\gdi32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\comctl32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\oleaut32.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\msvcp110d.dll”。已加载符号。
“Campic.exe”(Win32): 已加载“D:\camera\Campic3\Debug\PR_Dll.dll”。无法查找或打开 PDB 文件。
“Campic.exe”(Win32): 已加载“D:\Windows\System32\advapi32.dll”。已加载符号。
程序“[2632] Campic.exe”已退出,返回值为 -1072365566 (0xc0150002)。

对比后发现启动失败的原因是没有加载那几个CRT运行库以及MFC共享库,可以认为是现有系统不具有原始程序所依赖的库的版本!

3.使用VC的工具Depends(Dependence Walker)可以查看可执行模块依赖的链接库。如果标有黄色标记,表示模块所在目录下缺少相应的DLL。如果系统中也缺少这些文件,那么程序是无法执行的。故在系统中搜索缺乏的dll(这里推荐使用一个搜索软件,叫Everything,根据文件名搜索文件的最好软件)。如果没有,需要从其他机器上拷贝到程序目录下,或者安装vcredist.exe来向系统添加这些不同版本的库。

至此我的问题已解决!!!

最后给出其他人的两篇总结,用以学习使用VS2008开发程序的部署方法:

http://blog.csdn.net/jtop0/article/details/6933212

http://oliver258.blog.51cto.com/750330/411797

“应用程序无法正常启动0xc0150002” 问题分析步骤及解决方案相关推荐

  1. VLD 在VS2019中编译通过,但调试时报 应用程序无法正常启动(0xc0150002)

    @[TOC](VLD 在VS2019中编译通过,但调试时报 应用程序无法正常启动(0xc0150002)) 背景 Visual LeakDetector(VLD)是一款用于Visual C++的免费的 ...

  2. Android系统默认Home应用程序 Launcher 的启动过程源代码分析

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在前面一 ...

  3. 应用程序正常初始化(0xc0150002)失败的终极解决方案

    转自VC错误:http://www.vcerror.com/?p=62 最近做一个项目写了一个VC6下的MFC程序,结果传到别人的机子上(WIN7)出现了应用程序正常初始化(0xc0150002)失败 ...

  4. VC6应用程序正常初始化(0xc0150002)失败的终极解决方案

    最近做一个项目写了一个VC6下的MFC程序,结果传到别人的机子上(WIN7)出现了应用程序正常初始化(0xc0150002)失败的问题,当时还以为就是WIN7的问题,后来把程序拷贝到一台WINXP S ...

  5. 【JokerのKintex7325】SDK程序从QSPI启动过慢分析。

    软件环境:vivado 2018.1        硬件平台:XC7K325 接上篇文章最后的问题,microblaze的lwip工程从qspi启动需要7.8分钟,时间过长的问题排查感觉可以从以下几个 ...

  6. 解决 应用程序无法正常启动0xc0150002

    问题描述 准备打包,发到别人电脑上跑直接报错: 看看Windows 事件属性如下: 解决步骤: 将电脑上 C:\Program Files (x86)\Microsoft Visual Studio ...

  7. 运行软件打不开,报“应用程序无法正常启动(0xc0150002)”的错误

    出现这个问题,查看Windows的事件管理器,提示如下内容: "D:\work\ControlCAN.dll"的激活上下文生成失败. 找不到从属程序集 Microsoft.VC90 ...

  8. 应用程序无法正常启动解决方法

    1)应用程序无法正常启动0xc000007b Win32可执行程序在64位操作系统运行的时候,弹出错误解决找不到wpcap.dll,直接在System32文件夹下,拷贝wpcap.dll到系统中,运行 ...

  9. 应用程序无法正常启动 VS

    项目场景: 提示:这里简述项目相关背景: 在使用opencv和halcon以及VS编程时,出现应用程序无法正常启动. 原因分析: 主要是缺少dll哈.因为网上搜到的基本是缺少opencv相关dll的解 ...

最新文章

  1. robotframework接口测试(二)—post request
  2. sqlserver 参数化查询 允许为null_1+Null 居然等于 Null
  3. C# 基于密钥的64位加密与解密方法(原创)
  4. .configure
  5. Django实现的博客系统中使用富文本编辑器ckeditor
  6. 进程间通信 - 匿名管道实现
  7. SAP BW系统日常维护日常工作及常见的Infopackage错误
  8. 3班的第一次模拟面试
  9. Xor Sum 2(位运算)
  10. 进阶~Qt程序启动画面_vortex_新浪博客
  11. oracle中那个日期怎么相减_oracle日期相减
  12. 罗永浩当年求职新东方一万多字的求职信
  13. allegro 04_B class和subclass介绍
  14. 解决ValueError: too many values to unpack
  15. win10无法使用内置管理员账户打开应用怎么办
  16. 变色镜片 | 夏日光线防护新宠儿
  17. matlab 重复博弈,博弈论-囚徒困境与重复囚徒困境的启示
  18. 数据库--循环语句:for循环
  19. 【SpringBoot】50、SpringBoot为Redis的key加上前缀
  20. 移动安全框架(MobSF)

热门文章

  1. 仿QQ会员右下角提示框c#实现
  2. Java实现流的复制,解决流不可重用问题
  3. 全世界的人注意了,我要在兄弟连这里华丽变身了~!
  4. father's短信
  5. 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法
  6. Python 爬虫云验证码识别
  7. 进程的句柄,PID及线程
  8. 桌面出现白色图标的恢复办法
  9. 【洛谷_P1137】旅行计划
  10. 怎样解决苹果笔记本连接显示器显示不全的问题