al principio me hizo esta pregunta en el foro libRocket, pero dado que una mayor investigación sugiere que esto es más de un general C++/Visual Studio problema relacionado, estoy pidiendo aquí.configuración lado a lado incorrecto debido a un incorrecto manifiesta
Me postulo Visual Studio C++ 2010 Express y han descargado el código fuente completo para Win32 libRocket 1.2.1. Lo compilé con éxito en el modo de depuración sin errores ni advertencias, y ahora estoy tratando de ejecutarlo dentro de mi aplicación, que se basa en SFML 1.6.
Mi aplicación se compila sin errores o advertencias en contra de la libRocket recompiladas. Tan pronto como trato de ejecutarlo, sin embargo, aparece un mensaje de error que dice The application was unable to start correctly (0xc0150002). Click OK to close the application.
Cuando abro mi ejecutable con Dependency Walker, que estoy recibiendo el siguiente error:
Error: The Side-by-Side configuration information for "ROCKETCORE_D.DLL" contains errors. The application has failed to start because its side-by-side configuration is incorrect.
Me parece extraña, ya que también muestra tanto mi solicitud y en función de RocketCore_d.dll MSVCP100D.DLL y MSVCR100D.DLL. No hay desajuste allí. Por lo tanto, a continuación, realizó un 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.
Parecería que mi sistema no se encuentra el Visual Studio 2008 en tiempo de ejecución. ¿Es esto correcto? La versión 9.0.21022 del VS2008 redistribuible está de hecho presente en mi sistema. Pero aun así, considerando que recompuse libRocket usando VS2010, ¿no debería estar haciendo referencia al tiempo de ejecución de VS2010?
Creo que este error se debe a una configuración en el archivo de manifiesto de libRocket recién compilado:
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"> </assemblyIdentity>
</dependentAssembly>
puedo ver donde está viniendo ya que la aplicación fue escrito originalmente para VS2008 pero ¿cómo puedo obtener VS2010 a generar el manifiesto correcto? Las propiedades de los proyectos indican que se está generando automáticamente.
Tenga en cuenta que este problema sólo se produce en el modo de depuración, se ejecuta muy bien en la liberación. Por supuesto, preferiría poder ejecutarlo en modo depuración en mi sistema de desarrollador.
Cualquier punteros sobre cómo resolver este muy apreciados!
Gracias!
Eso borró todo. Resultó que libRocket estaba vinculado en contra de FreeType, que supongo fue construido usando VS2008. Tan pronto como vinculé a Rocket con un FreeType creado por VS2008, pude ejecutar mi aplicación. ¡Gracias! – Laurens
¿Quiere decir "... contra un FreeType construido en VS2010" – Schollii
Está en lo cierto, tan pronto como vinculé a Rocket con un FreeType creado por VS2010, funcionó. – Laurens