2011-01-12 24 views
10

Busqué en Google y me di cuenta de que probablemente haya varias causas para esto, así que describiré mi escenario.La aplicación no se pudo iniciar porque no se encontró MSVCP100D.dll, la reinstalación de la aplicación puede funcionar

Esto sucede cuando mi aplicación intenta cargar un archivo .dll construida en otra versión de Visual Studio (2010), si construyo el mismo proyecto en Visual Studio     2008 se carga el archivo DLL simplemente finas ...

no sé si es importante, pero Visual Studio     2010 versión del archivo DLL se construye en Windows 7 x32  , y Windows   Vista de 64 bits está en el otro lado con Visual Studio     2008.

+5

Recompile su aplicación en el modo "Versión" (en lugar del modo "Depurar"), luego descargue e instale el paquete redistribuible de Visual C++ 2010 para la arquitectura de procesador adecuada en la máquina de destino: [x86] (http: // www. microsoft.com/downloads/en/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84&displaylang=en), [x64] (http://www.microsoft.com/downloads/en/details.aspx?FamilyID = bd512d9e-43c8-4655-81bf-9350143d5867). La máquina de destino debe tener instalada la misma versión del tiempo de ejecución que la que construyó. En este caso, eso es v10.0 (de VS 2010). –

+1

simplemente consulte los siguientes enlaces: [http://www.buggymind.com/305](http://www.buggymind.com/305) [http://msdn.microsoft.com/ko-kr/library/ abx4dbyh.aspx] (http://msdn.microsoft.com/ko-kr/library/abx4dbyh.aspx) Espero que ayude. –

Respuesta

11

Si vincula dinámicamente al tiempo de ejecución de MSVC, entonces necesita instalar ese tiempo de ejecución en cada máquina que ejecutará su aplicación.

Tenga en cuenta que en este caso parece que está enlazando a la versión de depuración del tiempo de ejecución, no es normal distribuir aplicaciones vinculadas con la versión de depuración del tiempo de ejecución.

+0

Cambié la opción de generación de código de depuración multithread dll a 'multithread dll – Marko29

+0

compila y no resolvió el problema, realmente no sé dónde debo mirar – Marko29

+0

¿Todavía está informando 100D o solo 100 ahora? Si es 100D, no obtuvo la opción correcta o recompilarlo todo; si es 100, entonces debe obtener el instalador de tiempo de ejecución MSVC de su DVD VS (o probablemente puede descargarlo) y ejecutarlo en el sistema de destino. – Rup

7

Si no desea distribuir el tiempo de ejecución, puede cambiar las opciones de la Biblioteca de tiempo de ejecución en Visual Studio (Propiedades -> C/C++ -> Generación de código -> Biblioteca en tiempo de ejecución) desde/MD a/MT o desde/MDd a/MTd.

Como han dicho otros, si está distribuyendo esta aplicación, debe vincular de forma dinámica o estática a la versión Release de la biblioteca Runtime, no a la versión Debug.

2

Solo un pequeño consejo relacionado: NO AGREGUE ningún archivo * 248d.lib mientras compila y ejecuta en la versión RELEASE.

Estaba siguiendo consejos de diferentes blogs, y accidentalmente agregué tanto * 248d.lib como los archivos 248.lib. Básicamente en el EnlazadorEntradaAgregar Dependencias, asegúrese de que no tiene archivos * 248d.lib (aquí 248 es la versión 2.4.8).

Pasé horas preguntándome por qué las cosas no funcionaban en el modo de lanzamiento hasta que me di cuenta de que hay dos copias de archivos .lib, una * 248 y otra * 248d. Si incluye cualquiera de los archivos d en modo de lanzamiento, obtendrá el problema de DLL.

Cuestiones relacionadas