程序启动c0150002错误与Visual c++ 9.0 CRT (x86) WinSXS MSM
来源:互联网 发布:iphone多重曝光软件 编辑:程序博客网 时间:2024/05/12 08:01
今天在写好了一个小工具后发现在我的PC上运行良好,但是在有些机器上却会在启动时出现c0150002错误。
怀疑是因为系统环境不同的原因。
正好,安装了Install Shield 2009,想起来它可以检查程序的依赖项,于是拿来检查了一下,果然需要Visual c++ 9.0 CRT (x86) WinSXS MSM,这下大条了,找吧。。。
经过仔细排查,发现我的应用程序使用MFC写的,用的静态MFC,里面并没有用特殊的借口,于是偶再排查它所调用的一个DLL,发现这个DLL就有Visual c++ 9.0 CRT (x86) WinSXS MSM的依赖,继续查,发现DLL里也没有调用特殊的接口或模块,没办法,BAIDU:c0150002错误,想不到找到原因了:http://topic.csdn.net/u/20080915/19/85a68752-2100-4403-befe-eae2db0e551e.html
看到这样一句:不过奇怪的是在静态MFC中使用STL,倒不需要 msvcr90.dll,但是一般的win32工程却要了……
才想起我的DLL是Win32工程,不是MFC的,于是修改(VC2008):
属性--配置属性--常规--MFC的使用,从“使用标准 Windows 库”改变为“在静态库中使用 MFC”:
然后再编译连接,检查依赖,果然没有Visual c++ 9.0 CRT (x86) WinSXS MSM的依赖了。拿到之前不能运行的机器上,也没问题了,至此问题圆满解决。
使用Install Shield 2009查看程序的依赖项:
Project Assistent -- Application Files, 添加你要检查的可执行文件或DLL,会弹出一个窗口:
点yes,即可开始检查,通过这个就可以得知你的文件到底是不是和环境相关了。
吸取这个教训,以后将尽可能的使用MFC静态库来编写与系统环境无关的VC程序。
- 程序启动c0150002错误与Visual c++ 9.0 CRT (x86) WinSXS MSM
- Error merging Visual C++ 10.0 CRT (IA64) with module ID C:\Program Files (x86)\Common Files\Merge Mo
- CRT---Visual C++ C RunTime Lib
- glibc与MSVC CRT,crt编译错误及解决
- X86简单启动程序实验
- WinSxS
- WinSxS
- Winsxs
- How to bypass the WinSxS for CRT/MFC/ATL DLLs
- How to bypass the WinSxS for CRT/MFC/ATL DLLs
- WinSxS 混乱导致的应用程序不能启动
- 80x86汇编语言程序错误分析
- MSM LK启动流程初探
- Visual Studio 2017启动x86的Android模拟器失败
- C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- 简单恢复模式下,日志文件的增长
- Java软件工程师几个面试问题
- ThreadLocal是什么
- neo4j的使用二
- 如何成为编程高手的八大奥秘
- 程序启动c0150002错误与Visual c++ 9.0 CRT (x86) WinSXS MSM
- DataList分页
- 修改收藏夹位置
- 跨行业的Java程序员——农民造出了飞机,难道还是农民
- 详解Java垃圾收集算法
- Silverlight - Attached Behavior + Command
- 帕金森定律
- ubuntu上关于Code::Blocks(8.02RC)的安装全记录
- Apache的安装和使用