2012-01-24 18 views
5

Estoy trabajando en una máquina definitiva Windows 7 de sistema operativo de 64 bits VS2008 con 64 bits de complemento.Error de configuración Side-by-Side para compilación de depuración de 64 bits en VS2008

He creado con éxito mis proyectos en ambos 32 & 64 bit, configuración de depuración y liberación. La depuración de 64 bits no se inicia; da el error:

Unable to Start program xxx This application has failed to start because application configuration is incorrect. Review the manifest file for possible errors. Reinstalling the application may fix this problem. For more retails see application event log.

Ejecuté el andador de dependencias. Desde el camino redistibutable C: \ Archivos de programa (x86) \ Microsoft Visual Studio 9.0 \ VC \ Redist \ Debug_NonRedist \ amd64 \ Microsoft.VC90.DebugCRT que añade Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d.sll en la carpeta bin \ debug de mi solución.

Finalmente Dependency Walker ni tienen ninguna marca de color amarillo (los archivos que faltan) que quedan, pero aún así lo dio errores como:

Error: At least one required implicit or forwarded dependency was not found. Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. Error: Modules with different CPU types were found. Error: The Side-by-Side configuration information in "e:\xyz.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).

El manifiesto de 32 bits dice:

<?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.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

Mientras que la depuración de 64 bits manifiesto tiene:

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

Lo que no entiendo es, ¿por qué la depuración de 32 bits construir ru n con éxito?

Por favor, ayúdenme ya que he verificado muchas preguntas pero no he encontrado ninguna solución factible.

+0

¿No es un duplicado, pero posiblemente está relacionado? No estoy seguro si esto ayudará en absoluto: http://stackoverflow.com/questions/3803825/vc-crt-redist-problem –

+0

¿Está intentando ejecutar la compilación en una máquina diferente a la que construyó? Por lo general, el tiempo de ejecución de depuración es "no redistribuible", lo que significa que no puede ejecutarlo en otras máquinas sin construir módulos de combinación e instalarlos en la máquina en la que intente ejecutar el código. – Benj

+0

@Nic - No creo que esa pregunta ayude, esa persona solo estaba perdiendo el tiempo de ejecución correcto de la versión. El tiempo de ejecución de depuración es un problema ... Generalmente, la construcción de un "proyecto de instalación" en VS maneja los módulos de fusión para que usted pueda instalarlos junto con sus binarios con una compilación de depuración. – Benj

Respuesta

5

Gracias por responder a mi pregunta. Finalmente lo he resuelto y aquí está la solución: -

La mina era una solución basada en Qt VC++, la aplicación dependía de algunas dlls de terceros & libs. Mi tarea consistía en proporcionar soporte de 64 bits a mi aplicación para la que tenía compilación Qt y dlls de terceros & libs en sistema operativo de 64 bits.

Recibí el error CRT cuando traté de ejecutar mi aplicación en la configuración de depuración de 64 bits.El error persistió incluso después de haber copiado los siguientes tubos de rayos catódicos a la carpeta bin de mi solicitud

redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT:

  1. Microsoft.VC90.DebugCRT.manifest
  2. msvcm90d.dll
  3. msvcp90d.dll
  4. msvcr90d.dll

Microsoft.VC90.DebugOpenMP:

  1. vcomp90d.dll

pude lanzar mi aplicación con éxito en el modo de depuración bits 64 cuando Pegué los tubos de rayos catódicos anteriores en las carpetas correspondientes bin donde Qt y bibliotecas 3 ª parte estaban presentes.

+0

Sugerencia: debe poder aceptar su propia respuesta. –

1

Depende no es genial con las dependencias de lado a lado porque a menudo puede hacer que parezca que el dll se encuentra cuando en realidad se requiere una versión ligeramente diferente.

Puede utilizar sxstrace.exe para tener una mejor idea de lo que falta:

http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

El registro de eventos por lo general muestra los errores de lado a lado, pero lamentablemente éstos no le dan mucha información distinta que eso tienes un problema

2

Tuve el mismo problema después de agregar un manifiesto para "elevación de privilegios" a mi aplicación de consola Delphi (32 bits, problema cuando se ejecutó en Win7 x64). El tema estaba relacionado con una dependencia mencionada en el archivo de manifiesto:

<dependency> 
<dependentAssembly> 
    <assemblyIdentity 
    type="win32" 
    name="Microsoft.Windows.Common-Controls" 
    version="6.0.0.0" 
    publicKeyToken="6595b64144ccf1df" 
    language="*" 
    processorArchitecture="*"/> 
</dependentAssembly> 
</dependency> 

Cuando me sacó del manifiesto, el Side by Side de error desapareció.

+0

Bienvenido y gracias por la respuesta alternativa, MrTheV. –

+0

¿Cómo lo eliminaste del manifiesto? – user3731622

Cuestiones relacionadas