Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/06/2013, 07:20
Avatar de patilanz
patilanz
 
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 4 meses
Puntos: 29
Respuesta: msvcr110.dll missing

Cita:
Iniciado por vosk Ver Mensaje
Dicho de otra forma: hay librerias que se linkan de forma estatica y otras que se lincan de forma dinamica; las que se linkan de forma estatica no requieren exportar los binarios porque sus datos usados se 'escriben' en el ejecutable durante la compilacion; en cambio los que se linkan de forma dinamica cargan los datos del binario en el momento de la ejecucion en el pc del cliente (todo esto es mas o menos visto por encima, para entendernos). De echo supongo que ya te habras dado cuenta que dll tiene algo que ver con dinamic link library :)

Ahora viene el truco: en windows cuando se carga un modulo via LoadLibrary se indica una ruta para el dll. Como hay varias aplicaciones que posiblemente van a usar el mismo dll la funcion admite buscar una dll solo por su nombre (sin ruta), de forma que sigue una secuencia de busqueda: primero en el mismo directorio que el ejectable que la llama, si no existe buscará en el directorio de trabajo actual, si alli tampoco existe buscará en el directorio de binarios del sistema (windows/system, este directorio varia segun las versiones de windows), si aun no lo ha encontrado luego buscará en el directorio de windows, y si aun alli tampoco hay la dll solicitada aun echara un vistazo a los directorios declarados en la variable de entorno PATH; si no la ha encontrado retorna nulo y la aplicacion que la requiere debe mostrar una alerta con eso de 'falta algo32.dll'.

Eso significa que puedes instalar el dll que necesitas en cualquiera de esas rutas por las que busca la funcion de carga. Lo mas facil es dejarlo junto con la aplicacion:

Código:
c:/program files/miapp/ejecutable.exe
c:/program files/miapp/msvcr110.dll
Ten en cuenta que los ide llevan un directorio de binarios, de forma que las librerias que usas para desarrollar guardan ahi su dll; algunos ide añaden un PATH a las variables de entorno que apunta a su directorio de binarios, entonces la aplicacion funciona cuando compilas y ejecutas porque la funcion terminará buscando en los directorios del PATH; por el comtrario hay algunas librerias de programacion que no se instalan en los directorios del ide, sino que tienen su propio sitio y al instalarlas guardan su binario en el directorio de binarios de windows, entonces cuando compilas y ejecutas tambien funciona porque ese directorio es uno por los que busca la funcion.

Todo esto que te he comentado es mas o menos por encima, puedes buscar mas informacion por ahi y encontraras articulos con mejores explicaciones (y mas tecnicas) que este rollo que he colgado.

Saludos
vosk


Hola, me he confundido al poner el nombre del problema . En realidad ahora lo estoy probando en una maquina virtual windows xp 32 bits y el archivo que no existe es: MSVCP110D.dll también busque por google y pues no había casi nada, ni para descargar este archivo ya que me aparece el error anterior ... Encontré en una pagina en la que decían que para corregir el problema había que descargar update 3 de visual studio 2012 lo, hice pero nada. Sabéis algo que me pueda ayudar?