Search code examples
macosmatlabcompilationmex

Compile jpeg_read.c as mexmaci64 for MATLAB


I downloaded the jpeg_toolbox for MATLAB from this site, then downloaded the JPEG compiler tools from here. I followed the instruction to configure the whole for Mac (UNIX*).

Now, I would need to compile the jpeg_read.c and jpeg_write.c contained into the first link for MATLAB, because the toolbox does not provide the mexmaci64 files. However when I try to:

mex jpeg_read.c

MATLAB returns the following error:

Error using mex
Undefined symbols for architecture x86_64:
  "_jpeg_CreateDecompress", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_destroy_decompress", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_finish_decompress", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_read_coefficients", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_read_header", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_save_markers", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_std_error", referenced from:
      _mexFunction in jpeg_read.o
  "_jpeg_stdio_src", referenced from:
      _mexFunction in jpeg_read.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

How can I compile the program? Otherwise, does any of you have already got the mexmaci64 I would need?


Solution

  • I solved this way:

    brew install libjpeg
    

    I found the libraries in /usr/local/lib so on MATLAB I moved into the folder that contained the .c files that had to be compiled and I ran:

    mex jpeg_read.c "/usr/local/lib/libjpeg.a"
    mex jpeg_write.c "/usr/local/lib/libjpeg.a"