matlabmexvlfeat

mex error during vl_compilenn


I'm trying to install MatConvNet, as described here. When I run vl_compilenn, I get the following error:

>> vl_compilenn
Building with 'Microsoft Windows SDK 7.1 (C++)'.
MEX completed successfully. % ... repeated many times, then suddenly : 
Error using mex
MEX cannot find library 'gdiplus' specified with the -l option.
 MEX looks for a file with one of the names:
 libgdiplus.lib
 gdiplus.lib
 Please specify the path to this library with the -L option.


Error in vl_compilenn>mex_link (line 456)
mex(mopts{:}) ;

Error in vl_compilenn (line 408)
  mex_link(opts, objs, mex_dir, flags.link) ;

How do I install this library, or do whatever is necessary to get rid of this error?

I'm using MATLAB R2015b on a 64-bit Windows 7. I also succesfully ran mex in some other files, yet I'm quite sure that this library (MatConvNet) does not have a big error, so probably I'm missing some trivial but important file. But I'm not sure what.

Thanks for any help !

Edit

When I tried to copy gdiplus.lib into the proposed location, I get a different error :

...
Building with 'Microsoft Windows SDK 7.1 (C++)'.
MEX completed successfully.
Building with 'Microsoft Windows SDK 7.1 (C++)'.
MEX completed successfully.
Building with 'MinGW64 Compiler (C)'.
Error using mex
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
C:\MATLAB\matconvnet-1.0-beta16\matlab\mex\.build\vl_nnconv.obj:(.text[?vlmxError@@YAXW4_VlmxErrorId@@PEBDZZ]+0x178):
undefined reference to `__security_check_cookie'
C:\MATLAB\matconvnet-1.0-beta16\matlab\mex\.build\vl_nnconv.obj:(.xdata[$unwind$?vlmxError@@YAXW4_VlmxErrorId@@PEBDZZ]+0xc):
undefined reference to `__GSHandlerCheck'
C:\MATLAB\matconvnet-1.0-beta16\matlab\mex\.build\vl_nnconv.obj:(.text[?vlmxNextOption@@YAHQEAPEBUmxArray_tag@@HPEBU_vlmxOption@@PEAHPEAPEBU1@@Z]+0x239):
undefined reference to `__security_check_cookie'
C:\MATLAB\matconvnet-1.0-beta16\matlab\mex\.build\vl_nnconv.obj:(.xdata[$unwind$?vlmxNextOption@@YAHQEAPEBUmxArray_tag@@HPEBU_vlmxOption@@PEAHPEAPEBU1@@Z]+0x10):
undefined reference to `__GSHandlerCheck'
C:\MATLAB\matconvnet-1.0-beta16\matlab\mex\.build\vl_nnconv.obj:(.xdata[$unwind$mexFunction]+0x1c):
... and thousands of lines like this :)    
collect2.exe: error: ld returned 1 exit status


Error in vl_compilenn>mex_link (line 456)
mex(mopts{:}) ;

Error in vl_compilenn (line 408)
  mex_link(opts, objs, mex_dir, flags.link) ;

Edit 2

This, plus choosing Microsoft Windows SDK 7.1 (C) as the mex compiler solves the issue.


Solution

  • I had the same exact problem today with MATLAB R2015b. I fixed this error by searching for 'gdiplus.lib' file in my Matlab installation directory("C:\Program Files\MATLAB\R2015b\sys\lcc64\lcc64\lib64") and then copying it to inside the following location inside the MATLAB installation directory ("C:\Program Files\MATLAB\R2015b\extern\lib\win64").