Siguiendo con las crónicas de Winsucks, programé una pequeña aplicación para probar el uso de varias librerías estáticas dentro de un ejecutable e, intentando correrlo en otro computador (Windows Server 2008) se tira
The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log for more detail
Supuestamente >> ésto se debe a que faltan las librerías CRT (Visual C++ Runtime Library) que debieran venir en los Visual C++ Redistributable Package >>.
El problema es que una vez instalado el redistribuíble – y reiniciado – el mismo error sigue saliendo.
Si miramos los logs en el Event Viewer (así >>) dice
Activation context generation failed for "C:\Users\Administrator\Desktop\****\****\Debug\ProtocolBuffer****.exe". Dependent Assembly Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.
El único post que me ha hecho sentido es éste >>, que dice que ésa es una dll de Debug que, por ende, no es redistribuíble.
El problema es que en Release obtengo el mismo error. ¿Será que Release tiene alguna dependencia a una librería de Debug?
A ver si podemos obtener información más detallada con sxstrace.exe (side-by-side trace, justamente)
Es cosa de habilitar sxstrace con >>
sxstrace trace -logfile:sxstrace.etl hacer correr el programa y que se caiga, y después parsear el resultado para leerlo como txt sxstrace parse -logfile:sxstrace.etl -outfile:sxstrace.txt
Bueno, éso no ayudó. Pero efectivamente el problema era que una de las librerías que linkeaba a su vez estaba enlazada (todo estáticamente) a una librería de Debug en vez de su versión Release.