开发VC2008机器上执行没有问题,发布到另外一台机器后无法运行,
提示运势初始化错误:应用程序正常初始化(0xc0150002)失败vcredist_x86已经安装(vcredist_x86 sp1和feature pack支持的两个文件)第一次遇到这个问题,一个下午没搞定。有解决类似问题的朋友指点下。谢谢。
提示运势初始化错误:应用程序正常初始化(0xc0150002)失败vcredist_x86已经安装(vcredist_x86 sp1和feature pack支持的两个文件)第一次遇到这个问题,一个下午没搞定。有解决类似问题的朋友指点下。谢谢。
解决方案 »
- 关于Api Hook的一个奇怪问题
- FLASH控件在播放FLASH时候的右键菜单如何在VC里屏蔽掉不让它显示啊?我弄了好久都不行,帮帮忙~多谢~
- 求助
- 用CDATABASE的OPEN()函数来动态连接数据库,我是用SQL SERVER的,但是,现在要该用ACCESS的,那个连接字符串是怎么写的?小弟不知道格
- 简单问题一个,有过此编程经验的指点一下,先谢过
- 线程的同步问题(在线等待100)
- FindFirstFile,如何确定文件大小?
- 如何创建一个象DOS那样的窗口,在win32程序中?
- mfc单文档添加CSliderCtrl滑动控件问题
- 主窗口大小改变,控件不能正常按窗口大小改变?
- VC++网络编程,用按钮控件来控制服务器端数据接收的问题
- 请问如何判断一个回车键是否被输入法使用?
Microsoft Visual C++ 2005 SP1 Redistributable Package
Microsoft Visual C++ 2008 Redistributable Package
Microsoft Visual C++ 2008 SP1 Redistributable Package
Microsoft Visual C++ 2010 Redistributable Package 这些有吗?
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
------MYAPP
------MYDLL
|--Microsoft.VC90.CRT
|--------Microsoft.VC90.CRT.manifest
|--------msvcm90.dll
|--------msvcp90.dll
|--------msvcp90.dll
还是说所有的文件放进同一个目录下?
// -- 添加以下宏定义为了产生正确的manifest文件
//#define _BIND_TO_CURRENT_VCLIBS_VERSION 1
得到如下的manifest文件,而实际上我的vc的redist文件下的manifest指示版本为name="Microsoft.VC90.CRT" version="9.0.30729.1"我的应用程序编译出来提示为如下内容:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
我试试看。要不要修改CRT和MFC下面的manifeest文件版本指示?
优先搜索路径是 本地目录-》windows目录-》system32目录 好像是这样的
说明下我的编译:单独生成的manifest文件。
MSVCR90.DLL
MSVCP90.DLL
MFC90U.DLL我通过VC6的工具DEPENDS.exe来看,也看不到这几个库文件的版本信息,提示找不到这几个文件。明明程序在开发机器上是可以运行的,depency walker就是提示找不到它。不知道现在是不是可以断定我的程序就是因为DLL依赖问题导致的运行不了?前面发布的程序就没有遇到类似的问题,可以正常发布部署和运行。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
我看我别的程序都是三个部分,就是这里的前三个部分。可是我这个却发现最后多出一个对name="Microsoft.VC90.CRT" version="9.0.21022.8"版本的依赖定义。这是怎么回事?我检查我的工程依赖的所有DLL,应该都是重新编译,链接到最新的MFC DLL库文件的。有知道这个问题是不是导致不能运行的元凶?说明什么?
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
1、linker->manifest file->generate manifest=no
2、manifest tool->input and output->addtional manifest files=myapp.manifest请问是这样么?
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity
name="Smartcard.Demo.Application"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>SCardDemo</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<!--
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
-->
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
厄的manifest
http://blogs.msdn.com/b/dsvc/archive/2009/02/18/troubleshooting-manifest-related-issues.aspx
结果发现时MSVCRT.DLL引用的就的版本库。可是奇怪的是,我同一个机器另外一个工程编译出来的manifest文件就没冲突或者依赖多个不同版本的库文件问题。继续求教。郁闷要崩溃了我
_BIND_TO_CURRENT_VCLIBS_VERSION 参考下面文章:http://connect.microsoft.com/VisualStudio/feedback/details/361682/vc9-sp1-generates-manifests-with-the-wrong-version-numberhttp://blogs.msdn.com/b/vcblog/archive/2008/05/15/vc-runtime-binding.aspx