gpt4 book ai didi

c++ - 由于 list 不正确,并行配置不正确

转载 作者:IT老高 更新时间:2023-10-28 22:37:13 24 4
gpt4 key购买 nike

我最初在 libRocket 上提出了这个问题。论坛,但鉴于进一步调查表明这更像是与 C++/Visual Studio 相关的一般问题,我在这里问。

我正在运行 Visual Studio C++ 2010 Express 并已将完整的 Win32 源代码下载到 libRocket 1.2.1。我已在 Debug模式下成功编译它,没有出现错误或警告,现在正试图让它在我的应用程序中运行,该应用程序构建在 SFML 1.6 之上。

我的应用程序编译后没有错误或警告重新编译的 libRocket。但是,一旦我尝试运行它,我就会收到一条错误消息,提示 应用程序无法正确启动 (0xc0150002)。单击“确定”关闭应用程序。

当我使用 Dependency Walker 打开可执行文件时,出现以下错误:

错误:“ROCKETCORE_D.DLL”的并行配置信息包含错误。应用程序无法启动,因为它的并排配置不正确。

我觉得这很奇怪,因为它还根据 MSVCP100D.DLL 和 MSVCR100D.DLL 显示了我的应用程序和 RocketCore_d.dll。那里没有不匹配。所以我然后执行了 sxstrace:

=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = Wow32
CultureFallBacks = en-US;en
ManifestPath = Binaries\Debug\RocketCore_d.dll
AssemblyDirectory = Binaries\Debug\
Application Config File =
-----------------
INFO: Parsing Manifest File Binaries\Debug\RocketCore_d.dll.
INFO: Manifest Definition Identity is (null).
INFO: Reference: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
INFO: Resolving reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
INFO: Resolving reference for ProcessorArchitecture WOW64.
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: Did not find manifest for culture Neutral.
INFO: End assembly probing.
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 Binaries\Debug\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at Binaries\Debug\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Attempt to probe manifest at Binaries\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at Binaries\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.

我的系统似乎缺少 Visual Studio 2008 运行时。这个对吗? VS2008 Redistributable 的 9.0.21022 版本实际上存在于我的系统中。但即便如此,考虑到我使用VS2010重新编译了libRocket,它不应该引用VS2010运行时吗?

我相信这个错误源于新编译的 libRocket 的 list 文件中的配置:

    <dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"> </assemblyIdentity>
</dependentAssembly>

我可以看到它的来源,因为该应用程序最初是为 VS2008 编写的,但是如何让 VS2010 生成正确的 list ?项目属性表明它是自动生成的。

请注意,此问题仅在 Debug模式下发生,在发布时运行正常。我当然非常希望能够在我的开发人员系统上以 Debug模式运行它。

非常感谢任何有关如何解决此问题的指示!

谢谢!

最佳答案

shouldn't it be referencing the VS2010 runtime?

不,VS2010 不再将 CRT 存储在并行缓存中。它回到 c:\windows\system32 中,无需 list 即可找到它。在收到太多客户的投诉后,Microsoft 改变了主意,这些投诉与您所遇到的问题作斗争。

<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" .../>

这是您的核心问题。您的程序不仅依赖于旧版本的 CRT,而且它也是错误的版本。 CRT 的调试版本无法部署,只能在安装了 VS2008 的机器上运行。喜欢你的。

您肯定需要解决此问题,混合 CRT 版本可能会导致比部署问题更多的问题。您正在链接在调试配置中使用 VS2008 构建的 .obj 或 .lib。您需要找到生成该文件的项目并重新构建它,以便它使用正确的配置和 CRT 版本。如果你不知道,那么你可以为“DebugCRT”grep .obj 和 .lib 文件。

关于c++ - 由于 list 不正确,并行配置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com