Is there anyone who succeed to include libjpeg in some compiler? I tried everything: Dev C++, VS10, CodeBlocks, copy the headers and the lib by hand, add with the linker but nothing. Right now I am really confisued as there is not an official guide on how to compile it in any compiler. I would be really happy if someone could provide a tutorial on how the library can be compiled in any compiler. Thank you in advance.


To compile libjpeg 9 in Visual Studio 2012, here are the steps (after unzipping the archive file):

  1. Download the file WIN32.MAK (for example, from http://www.bvbcode.com/code/f2kivdrh-395674-down), and place a copy in the root source code directory (possibly C:\jpeg-9, but it depends where you unzipped it). I will refer to this directory as %jpegsrc% from now on. Having this file is important; otherwise step 3 will produce an error.

  2. In the Visual Studio command prompt, open to %jpegsrc%:

    cd %jpegsrc%

  3. At the same command prompt, execute the following:

    NMAKE /f makefile.vc setup-v10

    This will create two Visual Studio 2010 solutions in %jpegsrc%: jpeg.sln and apps.sln.

  4. Open each solution in Visual Studio 2012. Each one will prompt you to update all the projects to 2012 format. Click on “Update.” One time I did it, the prompt did not appear. In case that happens, right-click on the jpeg solution in the Solution Explorer, and choose “Update VC++ projects...,” which will produce the same prompt.

  5. Save and build each solution as normal. (You have to build the jpeg.sln solution before apps.sln, since the latter depends on the former.)

Note: this process should work correctly in Visual Studio 2010, without the updating, but I have not tested it.

Update: This method still works in Visual Studio 2015 for libjpeg-9a.


Here is how I've built libjpeg using MinGW on Windows :

1. Get MinGW with MSYS

I've got a copy from http://sourceforge.net/projects/mingw/. Quoting from www.mingw.org :

MSYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present.

We will need it to run the configure script that comes with libjpeg sources.


2. Get libjpeg sources

From http://www.ijg.org/, take the Unix format package (the Windows one won't work with this procedure). I took the jpeg_8d version.


3. Prepare a building directory

I've made a temporary directory named tmp in D:\, but you could choose whatever suits your needs. The thing that matters is the name of paths in MSYS. As it brings some * Unixity * to Windows, paths cannot be used in their original form. In a nutshell:

C:\path\to\file becomes /c/path/to/file in MSYS land, an so D:\tmp becomes /d/tmp.

Decompress the libjpeg sources in D:\tmp, so you have a jpeg-8d directory in there.

Create a jpeg-build directory inside D:\tmp, it will hold the built library.

Now everything is ready for the build.


4. ./configure, make, make install

That is the mantra of building in Unix land. An option should be added to redirect the install process to D:\tmp\jpeg-build.

Run the following commands in an MSYS shell (also named MinGW shell in Windows start menu):

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

As an additional step, you can run make test for safety.

These commands will build both static and shared versions of libjpeg.


5. Take the goods, delete the temporaries

If everything runs fine, you can delete the D:\tmp\jpeg-8d directory, but keep the jpeg-build one. It contains:

  • an include directory, containing libjpeg headers. You can move them to your compiler's headers directory.
  • a lib directory, with .a file to pass to the linker. You can move them to your compiler's library directory.
  • a bin directory, holding the libjpeg shared library libjpeg-8.dll and jpeg tools.
  • a share directory, containing man pages for the jpeg tools.

You can now build your program and link it against libjpeg by indicating the right include and library paths.


You can find many details about the libjpeg building and installation process in install.txt inside the source package.

I hope this will be useful.