MATLAB Answers

James Tursa

R2013a + Intel Composer XE 2013 + MSVC 2012 or MSVC 2010. Have you tried them yet?

Asked by James Tursa
on 13 Mar 2013
Latest activity Commented on by ANDREY
on 6 Nov 2013
Our IT folks have informed us we need to migrate from our 32-bit WinXP systems to Windows 7 systems. Great. They just set up a test computer with:
R2013a (both 32-bit and 64-bit installed) +
Intel Fortran Composer XE 2013 (trial) +
MSVC 2012 (trial) +
MSVC 2010 (trial) +
I am supposed to test these to make sure they work together before they purchase the Fortran Composer & MSVC. Basically we need to get a MATLAB + Fortran + C/C++ suite working together before they are willing to convert all of our machines to Windows 7.
Well, I fired up both the 32-bit and 64-bit R2013a. Neither sees the Fortran Composer with mex -setup. They both see the MSVC 2012 and MSVC 2010 but I get link errors when I try to compile C code with them.
Has anyone out there tried these combinations yet? Anything special I need to look out for as far as installation? (The IT folks installed everything, not me).
The Intel Fortran Composer 2013 seems to start up just fine as a studio app (brings up the Visual Studio development environment and I can compile Fortran code to 32-bit or 64-bit targets). The MSVC 2010 and 2012 also start up in the developer studio environment and I can compile C code with them. MATLAB gets through mex -setup with either MSVC 2010 or MSVC 2012 and seems to compile code via the mex command with either, but always fails to link.
Bottom line is, out of the box installation of R2013a and the mex setup files do not work for me for a supposedly supported combination and I was wondering if anyone had experience using these combinations yet. I would like to at least get a 32-bit suite working soon (before the trials expire).

  1 Comment

hi James Im having the same problem as you. Did you ever find a solution?

Sign in to comment.

2 Answers

Answer by Konrad Malkowski on 13 Mar 2013

Hi James,
Please take a look at the following page:
It appears that you need either Microsoft Windows SDK 7.1 or Microsoft Visual Studio 2010/2012 Professional.


Yes, I checked that already. They are all the Pro versions, but they are trial versions. I wouldn't have thought that would make a difference as far as compiling and linking ... but maybe it does somehow.
I am not sure if it would make a difference. Just to check I installed MATLAB R2013a on my machine (I have MS Visual Studio 2012 Professional on it) and mex -setup detected the compiler correctly.
One thing I would recommend is to download windows SDK 7.1 and see if it is detected correctly by MATLAB.
Also, are you using default mexopts files or custom ones?
Have you actually compiled anything yet? Or did you just do mex -setup? The mex -setup seems to work for me, it is just that when I try to mex some code it fails at the link step.
I wouldn't have thought SDK would be an issue since MSVC comes with and installs the appropriate SDK for the compiler, but I will look into it. Maybe the mexopts files are pointing to the wrong linker ...

Sign in to comment.

Answer by ANDREY
on 2 Nov 2013

I just installed Intel Fortran 14.0 (XE2013 SP1) into VS2012 SP1 and set up Matlab 2013b (mex -setup). Naturally to make mex -setup work I had to make special versions of the stp, bat and xml files in changing 13 to 14 everywhere in these text files (Mathworks seems to be ignorant that Intel XE2013 SP1 has both compilers with 14th version). I send you this banal info becasue you asked about new vesions of these products and how they work together. These three work fine. More importantly I compiled your great Fortran 90 API also making obvious changes. For default options it was easy but for -largeArrayDims it took 2 hours! Please mention in your pdf manual that one MUST add /integer_size:64 to the end of set COMPFLAGS= in mexopt.bat (User/.../) if and only if one wants to compile your API with -largeArrayDims. Without this flag one gets a rahter cryptic error MatlabAPImx.f(3436): error #6415: This name cannot be assigned this data type because it conflicts with prior uses of the name. [N] integer*8, intent(in) :: n


Not "ignorant", :) but the service pack that bumped version 13 to 14 was released well after our code freeze date for 13b. MEX will formally support the SP1 compiler in a future release, probably the 14a release.
In the meantime, you've already discovered changing "13" to "14" in the options files should be enough to get the SP1 compiler going with MEX.
Ok, "unaware" of the number, I did not mean anything offensive just a bit non proficient in your language. This was not a problem for me but for a newbie it might be a bit confusing to find and manually edit the files, a little nuisance but persistent for many versions of Matlab like the absence of Find/Replace in Files for years.

Sign in to comment.