windows - Ejecutable de Visual C++ y MSVCR100d.dll que falta
visual-studio-2010 visual-c++ (6)
¡La versión de depuración de las DLL de la biblioteca vc ++ NO está pensada para ser redistribuida!
Las versiones de depuración de una aplicación no son redistribuibles, y las versiones de depuración de las DLL de la biblioteca de Visual C ++ no son redistribuibles. Puede implementar versiones de depuración de aplicaciones y DLL de Visual C ++ solo en sus otras computadoras, con el único propósito de depurar y probar las aplicaciones en una computadora que no tiene instalado Visual Studio. Para obtener más información, vea Redistribuir archivos de Visual C ++.
También proporcionaré el enlace: http://msdn.microsoft.com/en-us/library/aa985618.aspx
Sé que esto se ha preguntado en otros lugares y ha respondido, pero estoy teniendo problemas con MS Visual Studio 2010. He desarrollado un archivo ejecutable de C ++, pero si ejecuto la versión de lanzamiento en una máquina que no tiene la biblioteca de tiempo de ejecución de VC ++ (es decir, msvcr100d.dll), obtengo el error "el programa no puede iniciarse porque msvcr100d.dll no se encuentra en su computadora".
Esto es extraño por dos razones:
- ¿Por qué está intentando vincularse con la versión de depuración de la redistribuible?
- Intenté aplicar esta corrección , estableciendo la configuración de la biblioteca de tiempo de ejecución en / MT en lugar de / MD (DLL de subprocesos múltiples), pero eso solo empeoró el problema (si copié manualmente msvcr100d.dll, entonces dijo que no podría encontrar msvcp110 .dll).
¿Cómo puedo empaquetar la biblioteca de tiempo de ejecución con mi ejecutable para poder ejecutarlo en máquinas que no tienen instalado MS VC 2010 o la redistribuible?
Sé que se considera un riesgo para la seguridad incluir una copia de la DLL, ya que no se actualizará nunca, pero mi objetivo es simplemente enviar este ejecutable a unos pocos amigos a corto plazo.
Definitivamente no debería necesitar la versión de depuración del CRT si está compilando en modo "release". Puede decir que son las versiones de depuración de las DLL porque terminan con una d
.
Más al punto, la versión de depuración no es redistribuible, por lo que no es tan simple como "empaquetarlo" con su archivo ejecutable o comprimir esos archivos DLL.
Verifique para asegurarse de que está compilando todos los componentes de su aplicación en el modo de "lanzamiento", y que está vinculando la versión correcta del CRT y cualquier otra biblioteca que use (por ejemplo, MFC, ATL, etc.).
Por supuesto, necesitará msvcr100.dll
(tenga en cuenta la ausencia del sufijo d
) y algunos otros si aún no están instalados. Indique a sus amigos que descarguen el Redistribuible de Visual C ++ 2010 (o x64 ), o inclúyalo con su aplicación automáticamente construyendo un instalador.
Este problema se explica en MSDN Library y, como entiendo, la instalación del paquete redistribuible de Microsoft puede ser útil.
Pero a veces se puede usar la siguiente solución (como solución lateral del desarrollador):
En su Visual Studio, abra Project properties -> Configuration properties -> C/C++ -> Code generation
y cambie la opción Runtime Library
a /MT
lugar de /MD
Para mí, el problema apareció en esta situación:
Instalé VS2012 y ya no necesitaba VS2010. Quería limpiar mi computadora y también eliminar los ejecutables de tiempo de ejecución de VS2010, pensando que ningún otro programa lo usaría. Luego quise probar mi DLL adjuntándola a un programa (llamémoslo programa X). Recibí el mismo mensaje de error. Pensé que hice algo mal al compilar el archivo DLL. Sin embargo, el verdadero problema fue que adjunté la DLL al programa X, y el programa X se compiló en VS2010 con información de depuración. Es por eso que el error fue lanzado. Recompuse el programa X en VS2012, y el error desapareció.
Tengo el mismo error.
Estaba refiriendo una DLL VS2010 en un proyecto VS2012.
Recién compilé el archivo DLL en VS2012 y ahora todo está bien.