Sé que esto se ha preguntado en otros lugares y ha respondido, pero estoy teniendo problemas con MS Visual Studio 2010. He desarrollado un ejecutable 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), aparece el error "el programa no puede iniciarse porque msvcr100d.dll no se encuentra en su computadora".Visual C++ ejecutable y que falta MSVCR100d.dll
Esto es extraño, por dos razones:
- ¿Por qué es tratar de vincular con la versión de depuración de la redistribuible?
- He intentado aplicar this fix, estableciendo la configuración de la biblioteca de tiempo de ejecución en/MT en lugar de/MD (DLL multiproceso), pero eso solo empeoró el problema (si copié manualmente msvcr100d.dll, entonces dijo que no podría encuentra msvcp110.dll).
¿Cómo puedo empaquetar la biblioteca de tiempo de ejecución con mi ejecutable para que pueda ejecutarlo en máquinas que no tienen instalado MS VC 2010 o la redistribuible?
Sé que se considera un riesgo de 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.
¿Qué quiere decir mediante el uso de la '/ MT' empeoró las cosas? Eso debería eliminar la dependencia en el tiempo de ejecución de DLL. ¿Su proyecto depende de otras DLL? Pueden ser lo que depende incorrectamente del tiempo de ejecución de depuración. Una utilidad como Dependency Walker puede ayudarlo a determinar si ese es el caso: http://www.dependencywalker.com –
@eli: No creo que a la gente realmente le importe mucho el riesgo de seguridad cuando le dicen que no redistribuya la DLL , ya que puedes vincular estáticamente de todos modos. Es más un problema de licencia que cualquier otra cosa. – Mehrdad
@MichaelBurr Dependencia Walker confirmó que una de las DLL de las que depende mi proyecto depende de msvcr100d.dll. Resulta que DLL no se estaba construyendo en modo de lanzamiento. Gracias. – mgiuffrida