2008-11-16 24 views
12

Sé que una pregunta como esta ya se hizo, pero la situación es un poco diferente, y todas las respuestas sobre ese problema no funcionó para mí.MSVCR90.DLL no se encontró

Estoy tratando de compilar un código C en VS2008 y no crea un exe. Además, cuando intento ejecutarlo con f5, me sale:

Esta aplicación no pudo iniciar porque Msvcr90.dll no se ha encontrado.

Hice algunos google y dijo que esto era porque mi paquete redistribuible C++ no estaba instalado. Así que instalé eso, reinicié todo e intenté de nuevo. Pero, por desgracia, sigo teniendo el mismo error. ¿Alguien tiene alguna pista de cómo solucionar esto?

+0

reduzca su proyecto a su forma más simple (por ejemplo, 'hello world') y publique el código, el archivo MAKE, el registro de compilación y cualquier otra cosa que tenga, y podemos ayudarlo. De lo contrario, estás disparando en la oscuridad. –

+0

Voto a la baja para dup, esta es solo otra faceta de tu http://stackoverflow.com/questions/293380/why-isnt-my-c-code-being-compiled-to-an-exe –

Respuesta

10

Parece que hay un problema con la instalación de su VS2008, o algo mal con su ruta de búsqueda de DLL. MSVCR90.DLL se instala cuando instala VS2008, no debería tener que instalar ningún paquete redistribuible adicional.

Primero verificaría la variable de entorno PATH y me aseguraré de que no haya ningún elemento oculto que rompa algunas de las entradas, y si no encuentra un problema allí, entonces desinstalaría y reinstalaría Visual Studio.

También podría intentar buscar MSVCR90.DLL (y otras DLL como esta) y moverlas a su carpeta Windows/System32.

Si lo que desea es comenzar ahora, otra cosa que podría hacer es cambiar su proyecto para vincular estáticamente a las bibliotecas de tiempo de ejecución, y luego ni siquiera intentará cargar esa DLL. Vaya a Configuración del proyecto, Propiedades de configuración-> C/C++ -> Generación de código y cambie la Biblioteca de tiempo de ejecución de la DLL de varios subprocesos a solo Multi-Threaded (o cualquiera de las opciones que no termina con DLL).

6

Estas son algunas cosas que debe comprobar para la configuración del proyecto- en la pestaña General: Tipo

  • .1 Configuración - exe en su caso.
  • .2 Uso de MFC: si se trata de una aplicación MFC, podría ser más portátil si lo hace: use MFC en una biblioteca estática.
  • .3 Uso de ATL: si no se usa atl (o no estoy seguro), decir No usando ATL.
  • .4 En C/C++ -> Biblioteca de tiempo de ejecución: decir Depuración de varios subprocesos (para la versión de depuración) o Multi-Threaded (para la versión de lanzamiento).

Si se producen errores de vinculador específicos que decir algo ya está definido: Esto significa que usted tiene algunas partes de su aplicación (bibliotecas separadas que se unen a su exe) que se construyen con diferente tiempo de ejecución de la vinculación:

puede:

  • Asegúrese de que estas bibliotecas fueron compilados con la misma versión de visual Studio como su aplicación.

  • Cambio esos proyectos para utilizar el tiempo de ejecución estática: C/C++ -> Generación de código -> Tiempo de ejecución de Bibliotecas:/MT o MTd (igual que el # 4 arriba)

  • Si todavía tiene algunos errores específicos trate de decirle el vinculador para ignorar ciertas bibliotecas: vaya a Enlazador-> Ignorar biblioteca específica y ponga en la biblioteca que desea ignorar. Esto es más común para 'libcmt.lib' o 'libcmtd.lib'. También es importante saber que lib terminando con 'd' suele ser la versión de depuración. Si está creando una compilación de lanzamiento y está 'ya definido en libcmtd.lib', eso significa que en algún lugar está vinculando una lib de liberación a una lib de depuración.

0

Si le da el exe ejecutado a alguien más, necesitarán instalar el último motor de ejecución visual para ejecutarlo. Esto solo funcionará para la versión de lanzamiento AFAIK. Visual Studio debe instalar el tiempo de ejecución requerido tanto para liberar como para depurar en su ruta. El proyecto probablemente tenga una dependencia adicional establecida accidentalmente para una versión incorrecta del tiempo de ejecución.

Ver si this page ayuda.

4

si elimina el archivo de manifiesto asociado con usted .exe, obtendrá el mismo error.

MSVCR90.dll no está instalado en system32, sino en la carpeta side-by-side, por lo tanto, se requiere el manifiesto.

0

Vaya a Configuración del proyecto, Propiedades de configuración-> C/C++ -> Generación de código y cambie la Biblioteca de tiempo de ejecución de la DLL de múltiples hilos a Multi-Threaded y luego intente compilar pero no lo hará. A continuación, cámbielo a depuración multiproceso e intente compilar, pero no lo volverá a hacer, y luego vuelva a cambiarlo a DLL de subprocesos múltiples y luego debería compilarse y ejecutarse.

3

Me acaban de picar y this page me pusieron a trabajar de nuevo.

La clave es ignorar las bibliotecas MSVCRT y MSVCR90 para la configuración de depuración. Establecer su enlazador -> Entrada -> ignorar la configuración de biblioteca específica para incluir lo siguiente:

  • MSVCRT
  • msvcr90
Cuestiones relacionadas