应用程序正常初始化(0xc0150002)失败的解决办法

来源:互联网 发布:js传值给html页面 编辑:程序博客网 时间:2024/04/28 03:27

1. 问题描述

本机使用VS2005开发,在本机上能正常运行。将程序部署到没有VS2005的电脑上会提示 "应用程序正常初始化(0xc0150002)".

 


打开”事件查看器“-”系统“ 看到以下信息:




2.问题分析

 程序发布时是使用了release版本,但是程序需要引用一个sqlite3.dll, 这个dll是使用vs2005 在debug模式下编译得到的。因此在运行程序时,加载sqlite3.dll,而这个dll是Debug下的DLL, 可能需要 VS的运行库支持。可以通过查看manifest文件查看这个DLL的依赖项目。

sqlite3.dll.intermediate.manifest 文件内容

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>


3. 解决方法

通过上面分析,知道是因为提供的debug模式下的DLL需要 VS的运行库支持的原因,因此可以有两种解决办法。

A. 找到需要的库文件一起发布

路径 C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT


B.发布release版本(包括DLL)

最终我是通过B方法解决了问题。  使用A方法时我在电脑上搜索了好多相关的DLL,但不知道具体使用那些DLL。


4.其它参考信息

http://hi.baidu.com/jianggx/blog/item/a21e658eacbacfe2f11f36d8.html

http://blog.csdn.net/diskingchuan/article/details/6655123



原创粉丝点击