C++ Visual Studio“;应用程序启动失败,因为应用程序配置不正确;错误

C++ Visual Studio“;应用程序启动失败,因为应用程序配置不正确;错误,c++,visual-studio-2010,linker,C++,Visual Studio 2010,Linker,我从一个朋友那里获得了一些代码,它们是在同一个系统(Windows7)上开发的,并且所有的库都相对映射 代码已生成,但在尝试运行它时,出现错误: 应用程序启动失败,因为应用程序配置不正确“ 在可执行文件上运行表明找不到msvcr90.dll、IESHIMM.dll、ieframe.dll和freeglut.dll。我将这些文件复制到execs目录,解决了这些问题。但是,仍然存在两个问题: 错误:“e:\projects\darwin\code\debug\GLTEMPLATE.EXE”的并行配置

我从一个朋友那里获得了一些代码,它们是在同一个系统(Windows7)上开发的,并且所有的库都相对映射

代码已生成,但在尝试运行它时,出现错误:

应用程序启动失败,因为应用程序配置不正确“

在可执行文件上运行表明找不到msvcr90.dll、IESHIMM.dll、ieframe.dll和freeglut.dll。我将这些文件复制到execs目录,解决了这些问题。但是,仍然存在两个问题:

错误:“e:\projects\darwin\code\debug\GLTEMPLATE.EXE”的并行配置信息包含错误。由于并行配置不正确,应用程序无法启动。有关详细信息,请参阅应用程序事件日志或使用命令行sxstrace.EXE工具(14001)。 警告:由于延迟负载相关模块中缺少导出功能,至少有一个模块具有未解析的导入

当SHLWAPI.DLL和IEFRAME.DLL模块被标记为红色时(假设错误消息与这两个模块相关,如何修复?)

此外,sxstrace给出了以下结果:

Begin Activation Context Generation.
Input Parameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = en-US;en
    ManifestPath = E:\Projects\Darwin\Code\Debug\GLTemplate.exe
    AssemblyDirectory = E:\Projects\Darwin\Code\Debug\
    Application Config File =
INFO: Parsing Manifest File E:\Projects\Darwin\Code\Debug\GLTemplate.exe.
    INFO: Manifest Definition Identity is (null).
    INFO: Reference: Microsoft.VC90.DebugCRT(...)
INFO: Resolving reference Microsoft.VC90.DebugCRT
    INFO: Resolving reference for ProcessorArchitecture x86.
        INFO: Resolving reference for culture Neutral.
            INFO: Applying Binding Policy.
                INFO: No publisher policy found.
                INFO: No binding policy redirect found.
            INFO: Begin assembly probing.
                INFO: Did not find the assembly in WinSxS.
                INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT.MANIFEST.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
                INFO: Did not find manifest for culture Neutral.
            INFO: End assembly probing.
    ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.
(...)
还有一些更相似

我还尝试按照其他相关文章的建议,将运行库从多线程调试DLL(/MDd)更改为多线程调试(/MTd)

msvcrdt.lib(MSVCR100D.dll):错误LNK2005:_LIBCMTD.lib(printf.obj)中已定义printf

还有五个类似的。排除LIBCMTD.lib允许我构建。但是,我仍然无法运行该应用程序。我得到了与一开始相同的错误

出了什么问题,我该如何解决


到目前为止,没有其他相关帖子给我答案。

“msvcr90“您的项目使用一个或多个使用VisualStudio2008(Visual Studio的早期版本)构建的库。他们需要C运行库来提供该版本;这就是它抱怨msvcr90.dll的原因。您拥有VisualStudio2010;您的计算机上只安装了msvcr100.dll


仅仅复制msvcr90.dll是行不通的;该DLL需要安装在Windows并行缓存中。您可以从Microsoft或朋友处获得安装程序。然而,这并不是真正的解决办法;根据CRT的两个版本,您的应用程序仍然存在问题。非常不健康,这可能导致很难诊断崩溃和内存泄漏。您需要使用VisualStudio2010重建库。这就是我的建议失败的地方;我无法从您的问题中猜出这些库是什么。

可能是清单中的问题。 我设置了配置属性/Linker/Manifest文件/Generate manifes==No
程序开始启动。

不,我也安装了mscvr90.dll,因为它与我安装的VCRedist_x86一起安装。。。另外,这个项目完全是用VS2010构建的,那么为什么我仍然会遇到这种错误呢?如果你的项目完全是用VS2010构建的,那么你永远不会依赖msvcr90.dll。你错过了一个,我猜不出是哪个。使用链接器的/VERBOSE选项,并确保您可以说明所使用的每个.lib。哦,还有3个版本的vcredit_x86,你必须得到正确的版本。最后一个有ATL安全补丁的是最好的。