c++ image-processing libjpeg
here

c++ - Compilando libjpeg



image-processing (5)

¿Hay alguien que logre incluir libjpeg en algún compilador? Intenté todo: Dev C ++, VS10, CodeBlocks, copié los encabezados y la lib manualmente, agregué el enlazador pero nada. En este momento estoy realmente confiscado ya que no hay una guía oficial sobre cómo compilarlo en cualquier compilador. Sería muy feliz si alguien pudiera proporcionar un tutorial sobre cómo se puede compilar la biblioteca en cualquier compilador. Gracias de antemano.


Aquí es cómo he construido libjpeg usando MinGW en Windows:

1. Obtenga MinGW con MSYS

Tengo una copia de http://sourceforge.net/projects/mingw/ . Citando de www.mingw.org:

MSYS es una colección de utilidades de GNU como bash, make, gawk y grep para permitir la creación de aplicaciones y programas que dependen de las herramientas tradicionales de UNIX para estar presentes.

Lo necesitaremos para ejecutar el script de configure que viene con fuentes libjpeg.


2. Obtener fuentes libjpeg

Desde http://www.ijg.org/ , tome el paquete de formato Unix (el de Windows no funcionará con este procedimiento). Tomé la versión jpeg_8d .


3. Prepare un directorio de construcción

He creado un directorio temporal llamado tmp en D:/ , pero puede elegir lo que se ajuste a sus necesidades. Lo que importa es el nombre de las rutas en MSYS. Como trae algunos * Unixity * a Windows, las rutas no se pueden usar en su forma original. En una palabra:

C:/path/to/file convierte en /c/path/to/file en MSYS land, y entonces D:/tmp convierte en /d/tmp .

Descomprime las fuentes libjpeg en D:/tmp , por lo que tienes un directorio jpeg-8d allí.

Cree un directorio jpeg-build dentro de D:/tmp , contendrá la biblioteca construida.

Ahora todo está listo para la construcción.


4. ./configure, make, make install

Ese es el mantra de la construcción en la tierra de Unix. Se debe agregar una opción para redirigir el proceso de instalación a D:/tmp/jpeg-build .

Ejecute los siguientes comandos en un shell MSYS (también llamado shell MinGW en el menú de inicio de Windows):

cd /d/tmp/jpeg-8d ./configure --prefix=/d/tmp/jpeg-build make make install

Como paso adicional, puede ejecutar la make test de seguridad.

Estos comandos crearán versiones estáticas y compartidas de libjpeg.


5. Tome la mercancía, elimine los temporales

Si todo funciona bien, puede eliminar el directorio D:/tmp/jpeg-8d , pero mantenga el jpeg-build . Contiene:

  • un directorio de include , que contiene encabezados libjpeg. Puede moverlos al directorio de encabezados de su compilador.
  • un directorio lib , con .a archivo .a para pasar al enlazador. Puede moverlos al directorio de la biblioteca de su compilador.
  • un directorio bin , que contiene la biblioteca compartida libjpeg-8.dll y las herramientas jpeg.
  • un directorio share , que contiene páginas man para las herramientas jpeg.

Ahora puede compilar su programa y vincularlo contra libjpeg indicando las rutas correctas de inclusión y biblioteca.


Puede encontrar muchos detalles sobre la compilación de libjpeg y el proceso de instalación en install.txt dentro del paquete fuente.

Espero que esto sea útil.


Es realmente simple construir jpeg.lib con VS10.

Primero, descargue el código fuente libjpeg en formato zip. En el momento en que escribo esto lo puedes encontrar here .

A continuación, extraiga el contenido del archivo zip en su disco.

A continuación, abra un shell de símbolo del sistema de VS2010 (o llame a vcvarsall.bat en cualquier ventana del símbolo del sistema), cd al directorio de origen de jpeg (jpeg-8d en la descarga mencionada anteriormente) y escriba lo siguiente:

nmake -f makefile.win setup-v10

Esto generará dos soluciones VS2010 y un grupo de archivos de proyecto. Las soluciones son:

  • jpeg.sln , que construye jpeg.lib
  • apps.sln , que crea las aplicaciones de muestra.

¡Buena suerte!


Para compilar libjpeg 9 en Visual Studio 2012, estos son los pasos (después de descomprimir el archivo):

  1. Descargue el archivo WIN32.MAK (por ejemplo, desde http://www.bvbcode.com/code/f2kivdrh-395674-down ) y coloque una copia en el directorio raíz del código fuente (posiblemente C:/jpeg-9 , pero Depende de dónde lo descomprimiste). Me referiré a este directorio como %jpegsrc% partir de ahora. Tener este archivo es importante; de lo contrario, el paso 3 producirá un error.

  2. En el símbolo del sistema de Visual Studio, ábralo a %jpegsrc% :

    cd %jpegsrc%

  3. En el mismo símbolo del sistema, ejecuta lo siguiente:

    NMAKE /f makefile.vc setup-v10

    Esto creará dos soluciones de Visual Studio 2010 en %jpegsrc% : jpeg.sln y apps.sln .

  4. Abra cada solución en Visual Studio 2012. Cada uno le pedirá que actualice todos los proyectos al formato 2012. Haga clic en "Actualizar". Una vez que lo hice, el mensaje no apareció. En caso de que eso ocurra, haga clic con el botón derecho en la solución jpeg en el Explorador de soluciones y seleccione "Actualizar proyectos de VC ++ ...", que generará el mismo aviso.

  5. Guarde y construya cada solución de forma normal. ( jpeg.sln solución jpeg.sln antes de apps.sln , ya que esta última depende de la anterior).

Nota: este proceso debería funcionar correctamente en Visual Studio 2010, sin la actualización, pero no lo he probado.

Actualización: Este método todavía funciona en Visual Studio 2015 para libjpeg-9a .


Si no tiene instalado Visual Studio 2010, esto es lo que funciona en Visual Studio 2017:

Pasos básicos / comunes:

  1. Descargue la última versión de libjpeg desde: http://www.ijg.org/ (versión zip) y extráigala a una carpeta
  2. Abra el "Indicador de comando del desarrollador para VS2017"
  3. Cambiar directorio ( cd ) a donde extrajo la fuente de la biblioteca

Enfoque VS 2017:

  1. Incluya el directorio Windows SDK v7.1A (requerido para Win32.Mak por nmake más adelante) ejecutando: set INCLUDE=%INCLUDE%;c:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include

  2. Ejecute nmake /f makefile.win setup-v15 (observe la v15 para VS2017 aquí)

A partir de aquí, siga lo explicado por @AtanasiusOfAlex para actualizar la solución de Visual Studio 2010 a la versión de Visual Studio que está ejecutando. Si desea la configuración de depuración, siga lo que @SteveEng explicó.

Errores con los que puede tropezar:

  • Si nmake falla y le dice que no sabe cómo hacer jconfig.h, cambie manualmente el archivo jconfig.vc a jconfig.h
  • Si nmake falla y le dice que no se puede encontrar Win32.Mak, cópielo manualmente desde el directorio del SDK mencionado en el paso 4 al directorio de origen de libjpeg. Si no tiene instalada esa versión de SDK, descargue el archivo de un recurso confiable.
  • Si nmake falla y le dice que no sabe cómo setup-v15 , prueba y error a partir de setup-v10 , setup-v11 , etc ... Estas son versiones VS y una de ellas debe funcionar siempre ya que tiene instalada cualquier versión de VS posterior a VS 2008.

Espero que esto ayude a las personas a pasar por un dolor similar con esto.


Si también quieres el modo de depuración en MSVC. Siga el método de AthanasiusOfAlex, cree la versión, luego:

  1. Haga clic derecho en el proyecto y seleccione propiedades en la parte inferior
  2. Haga clic en el administrador de configuración y en el menú desplegable de configuración de la solución activa seleccione -nueva-
  3. Establezca el nombre para depuración y en la lista desplegable seleccione la configuración de copia desde la versión y haga clic en Aceptar
  4. Cierre el cuadro de diálogo, vaya a la configuración general y debajo de Target Name agregue el anuncio hasta el final para que se vea así: $ (ProjectName) d
  5. En la lista desplegable de Optimización de todo el programa, seleccione: Sin optimización de todo el programa
  6. A continuación, haga clic en C / C ++ en las propiedades de configuración a la izquierda y en el menú desplegable Formato de información de depuración seleccione C7 compatible (/ Z7)
  7. En la optimización, seleccione deshabilitado y seleccione NO para ambos Habilitar optimizaciones de Fiber-Safe y Optimizaciones de todo el programa
  8. En preprocesador, definiciones de preprocesador, haga clic en editar y use lo siguiente: WIN32 _DEBUG DEBUG _LIB _CRT_SECURE_NO_WARNINGS
  9. En la generación de código, en la biblioteca de tiempo de ejecución, seleccione DLL de depuración de varios subprocesos (/ MDd)

¡Construye y listo!