Compilar con MSVC (VC++)

Estás viendo el contenido archivado del viejo foro de Ojodigital. No podrás iniciar sesión ni crear nuevo contenido o comentarios.

El foro de ojodigital ha migrado a: https://foro.ojodigital.com, con un aspecto mucho más moderno, amigable y adaptado a dispositivos móviles.

¡¡PINCHA AQUÍ PARA ACCEDER AL NUEVO FORO!!

Resultados 1 al 6 de 6
  1. #1
    Ingreso
    30 abr, 08
    Ubicación
    Madrid
    Mensajes
    883
    Post Thanks / Like

    Compilar con MSVC (VC++)

    Aunque aún no seremos capaces de compilar dcraw.dll con VC++ (bueno, la compilamos pero luego no funciona... aún), sí creo haber encontrado el motivo por el que cuando compilamos las demás DLLs (colormng y perfectImage) con VC++ funciona en nuestra máquina y no en las de los demás.

    Según este foro, deberíamos probar a compilarlas en modo Release en vez de Debug. Es muy probable que sólo sea eso. Si con eso no se arregla, entonces es cuestión de instalar en las máquinas en la que no funcione el runtime de VC++ actualizado.

    Para perfectImage.dll no habrá demasiada diferencia, pero para colormng.dll sí, ya que permitirá activar el código ensamblador en vez de el código C, que es como está ahora, con lo que podríamos eliminar el retardo ese que queda entre la fase de revelado 6 y la presentación en pantalla.

    Voy a probarlo a ver qué tal. Si funciona dejaremos colormng.dll (que incluye LCMS) compilado con VC++ y el resto con MinGW (gcc). Es un poco follón, pero qué se le va a hacer.

    Por otro lado, he probado un entorno de desarrollo en C/C++ diferente a Dev-C++ (que aunque me gusta empieza a ir lento con las ya más de 10.000 líneas de código de dcraw.dll). Obviamente es gratuito y multiplataforma, se llama Code::Blocks y detecta automáticamente los compiladores de C/C++ instalados y se configura para ellos, impresionante (yo tengo instalados ahora mismo cygwin, MinGW, Watcom C++, DJCPP, MSVC6 y MSVC8 , en cuanto tenga un rato tengo que limpiar mi máquina). El editor tiene más opciones que el Dev-C++ y permitiría utilizar un sólo entorno y un sólo tipo de archivos de proyecto, independientemente del compilador que se utilizara para cada DLL. De momento he probado a compilar dcraw.dll y lo hace sin problemas, además importa directamente los archivos de proyecto de Dev-C++. Os mantendré informados.

    Un saludo:
    Última edición por ManuelLlorens; 17/06/2008 a las 15:53
    Manuel Llorens

    Olympus E-P1, E-510, E-300
    www.rawness.es

  2. #2
    Ingreso
    22 mar, 08
    Ubicación
    Oviedo
    Mensajes
    14,367
    Post Thanks / Like
    Gracias, Manuel.
    Probaré lo que dices de MS-VC++ y cuando ponga las pruebas de perfectImage lo haré compilado a VC++ a ver si a la gente le funciona.

    Yo también prefiero usar VC++ más que nada por el tema de unificar y no tener que andar con un montón de herramientas diferentes.
    Dcraw de momento tendrá que seguir con Dev-C++ hasta que se consiga compilar sin problemas en MS-VC++.

    Saludos

  3. #3
    Ingreso
    30 abr, 08
    Ubicación
    Madrid
    Mensajes
    883
    Post Thanks / Like
    Cita Iniciado por ariznaf Ver mensaje
    Gracias, Manuel.
    Probaré lo que dices de MS-VC++ y cuando ponga las pruebas de perfectImage lo haré compilado a VC++ a ver si a la gente le funciona.

    Yo también prefiero usar VC++ más que nada por el tema de unificar y no tener que andar con un montón de herramientas diferentes.
    Dcraw de momento tendrá que seguir con Dev-C++ hasta que se consiga compilar sin problemas en MS-VC++.

    Saludos
    ¿Tú no tendrías que estar de camino a Oviedo?

    Un saludo:
    Manuel Llorens

    Olympus E-P1, E-510, E-300
    www.rawness.es

  4. #4
    Ingreso
    22 mar, 08
    Ubicación
    Oviedo
    Mensajes
    14,367
    Post Thanks / Like
    Sí, estaba esperando por el vuelo.
    Ahora ya estoy (una hora tarde como siempre con EasyJet tres veces que volé tres veces que llegó tarde en mayor o menor medida )

  5. #5
    Ingreso
    30 abr, 08
    Ubicación
    Madrid
    Mensajes
    883
    Post Thanks / Like
    Avances en la compilación de dcraw.exe (de momento el de Coffin, no el nuestro) con VC++ 2005.

    En la última versión de Coffin, la 8.88 el único cambio necesario para que la aplicación compile y funcione correctamente (bueno, compila con 457 advertencias que pueden ignorarse tranquilamente) en VC++ es cambiar la línea 58:
    Código:
    #ifdef DJCPP
    por ésta otra:
    Código:
    #if defined (DJGPP) || (_MSC_VER)
    Como proyecto de VC++ 2005 se crea un proyecto de consola Win32 vacío y en las opciones del proyecto hay que añadir las opciones del preprocesador: NO_JPEG;NO_LCMS (Exactamente en Propiedades de configuración -> C/C++ -> Preprocesador -> Definiciones del preprocesador).

    Con eso y con todas la optimizaciones seleccionadas (incluyendo SSE2 y fast-math) lo he compilado y probado y va como una moto. Además seguro que funciona bien en todas las versiones de Windows.

    Ahora voy a intentar lo mismo con nuestro dcraw.c.
    __________________________________________________ ______
    Actualización:

    Tras realizar unos pequeños cambios en nuestro código para que VC++ acepte compilarlo como C en lugar de C++ también compila nuestro .exe sin problemas. Ahora toca fusionar los cambios de Coffin 8.86->8.88 sobre nuestro código. A ver si me apaño con el diff.
    __________________________________________________ ______
    Actualización:

    Bueno, ya he fusionado los cambios y ya compila y funciona con VC++ nuestro código con los últimos cambios de Coffin (v 8.88) que soportan dos o tres cámaras más (creo que la Canon 1000D y la Olympus E520 y alguna Panasonic). También hay algunas pequeñas diferencias en la interpolación PPG. Finalmente no me he apañado con el diff y he tenido que hacer "un diff a mano", a ver si alguno de vosotros me enseña a hacerlos en Windows porque soy un negado .

    Ahora a por la DLL.
    __________________________________________________ ______
    Actualización:

    Bueno, pues ya está terminado todo. Ya tengo la DLL de dcraw compilada con VC++ 2005 con los últimos cambios de Coffin y funcionando perfectamente con el resto del código de perfectRAW (y yo diría que un pizca más rápida que la anterior). Ahora toca limpiar un poco el resto del proyecto, especialmente la parte en C# y subir los cambios al SVN.

    El .exe y el .dll resultantes según el proyecto elegido funcionarán perfectamente en todas las versiones de Windows y además compilan con GCC con Cygwin, Dev-c++ con MinGW, DJCPP y Visual C++ 2005. Los .exe también deberían compilar en Linux y MacOS, compilar las dlls en esos entornos es de momento más de lo que puedo ofrecer, pero no creo que sea muy complicado de conseguir.

    Las gracias para mis suegros que se han quedado esta noche con mis hijos .

    Un saludo:
    Última edición por ManuelLlorens; 04/10/2008 a las 12:16
    Manuel Llorens

    Olympus E-P1, E-510, E-300
    www.rawness.es

  6. #6
    Ingreso
    30 abr, 08
    Ubicación
    Madrid
    Mensajes
    883
    Post Thanks / Like
    Dado que desde el último mensaje el proyecto compila rutinariamente con VC++ 2008 y que en breve pasaremos a wxWidgets, pero seguiremos con MSVC, cierro este hilo.
    Manuel Llorens

    Olympus E-P1, E-510, E-300
    www.rawness.es


 

Marcadores

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •