MATLAB Answers

compiling a 32-bit C Shared Library

16 views (last 30 days)
Hi all,
I need to compile a 32-bit C shared library to deploy some Matlab Code. I have installed Matlab 2015b on a 32-bit Machine running windows 10. However, I am having trouble locating a compatible 32-bit compiler. Does anyone have any pointers to a (preferably) free compiler that would be recognized by this version of Matlab. I have tried searching for the recommended compilers given under https://www.mathworks.com/content/dam/mathworks/mathworks-dot-com/support/sysreq/files/SystemRequirements-Release2015b_SupportedCompilers.pdf specifically "Microsoft Windows SDK 7.1 Available at no charge; requires .NET Framework 4." but to no avail. Any tips would be much appreciated.
Best wishes,
John

  0 Comments

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 24 May 2018
SDK 7.1 is your only option. It is, however, not easy to install on Windows 10. You could experiment with the work-around described at https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1de7c9b4-1feb-4c98-b426-f7f02cbafa99/windows-sdk-71-on-windows-10?forum=windowssdk

  3 Comments

John Anderson
John Anderson on 25 May 2018
Hi Walter, Thanks for your advice. In the end I found it quite a struggle to work with windows 10 and have switched to a machine running windows 7 (32 bit). I have installed Matlab 2015b and followed the advice of Jeremy Wong given on the link you provided namely
1. Uninstall any Visual C++ 2010 Redistributables from the control panel first.
2. Download the corresponding offline ISO image from the Windows SDK archive.
3. After mounting the image, open F:\Setup\SDKSetup.exe directly.
This enabled me to install the windows 7 SDK.
However, having done this I now find that Matlab seems unable to detect the compiler (assuming I have successfully installed it) Executing mex -setup -v gives the following output.
>> mex -setup -v
Verbose mode is on.
... Looking for compiler 'Intel C++ Composer XE 2011 with Microsoft SDK 7.1 (C)' ...
... Looking for environment variable 'ICPP_COMPILER12' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2011 with Microsoft SDK 7.1 (C)'.
... Looking for compiler 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2008 (C)' ...
... Looking for environment variable 'ICPP_COMPILER12' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2008 (C)'.
... Looking for compiler 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2010 (C)' ...
... Looking for environment variable 'ICPP_COMPILER12' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2010 (C)'.
... Looking for compiler 'Intel C++ Composer XE 2013 with Microsoft SDK 7.1 (C)' ...
... Looking for environment variable 'ICPP_COMPILER14' ...No.
... Looking for environment variable 'ICPP_COMPILER13' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2013 with Microsoft SDK 7.1 (C)'.
... Looking for compiler 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2010 (C)' ...
... Looking for environment variable 'ICPP_COMPILER14' ...No.
... Looking for environment variable 'ICPP_COMPILER13' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2010 (C)'.
... Looking for compiler 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2012 (C)' ...
... Looking for environment variable 'ICPP_COMPILER14' ...No.
... Looking for environment variable 'ICPP_COMPILER13' ...No.
Did not find installed compiler 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2012 (C)'.
... Looking for compiler 'lcc-win32' ...
... Looking for folder 'C:\Program Files\MATLAB\R2015b\sys\lcc' ...Yes.
Found installed compiler 'lcc-win32'.
... Looking for compiler 'Microsoft Visual C++ 2008 Professional (C)' ...
... Looking for environment variable 'VS90COMNTOOLS' ...No.
Did not find installed compiler 'Microsoft Visual C++ 2008 Professional (C)'.
... Looking for compiler 'Microsoft Visual C++ 2010 Professional (C)' ...
... Looking for environment variable 'VS100COMNTOOLS' ...No.
Did not find installed compiler 'Microsoft Visual C++ 2010 Professional (C)'.
... Looking for compiler 'Microsoft Visual C++ 2012 (C)' ...
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 11.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 11.0 ...No.
... Looking for registry setting 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 11.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 11.0 ...No.
Did not find installed compiler 'Microsoft Visual C++ 2012 (C)'.
... Looking for compiler 'Microsoft Visual C++ 2013 Professional (C)' ...
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 12.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 12.0 ...No.
... Looking for registry setting 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 12.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 12.0 ...No.
Did not find installed compiler 'Microsoft Visual C++ 2013 Professional (C)'.
... Looking for compiler 'Microsoft Visual C++ 2015 Professional (C)' ...
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0 ...No.
... Looking for registry setting 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0 ...No.
Did not find installed compiler 'Microsoft Visual C++ 2015 Professional (C)'.
... Looking for compiler 'Microsoft Windows SDK 7.1 (C)' ...
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1' InstallationFolder ...Yes ('C:\Program Files\Microsoft SDKs\Windows\v7.1\').
... Looking for registry setting 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 10.0 ...No.
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 10.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 10.0 ...No.
... Looking for registry setting 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 10.0 ...No.
Did not find installed compiler 'Microsoft Windows SDK 7.1 (C)'.
Copied options file from 'C:\Program Files\MATLAB\R2015b\bin\win32\mexopts\lcc-win32.xml' to 'C:\Users\John\AppData\Roaming\MathWorks\MATLAB\R2015b\mex_C_win32.xml'.
MEX configured to use 'lcc-win32' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
To choose a different language, select one from the following:
mex -setup C++
mex -setup FORTRAN
John Anderson
John Anderson on 25 May 2018
I did just get this error when attempting to compile a C Shared library
Warning: Windows SDK 7.1 appears to be installed, but its compiler was not found. Install .NET Framework 4.0, and then rerun the SDK installation to add the "Visual C++ Compilers" component. See http://www.mathworks.com/support/solutions/en/data/1-IB1G3Q/ for more information.
I will check this out and see how I get on.
Best wishes,
John
John Anderson
John Anderson on 25 May 2018
Hi all,
So the installation I had attempted of Windows SDK 7.1 has a known problem in that the compilers are sometimes uninstalled during the installation. This requires you to run this patch
https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422
However, this fails unless .NET 4.7.2 is installed. I had thought I had already done this but must have been in a previous life. Anyway I installed from here
https://www.microsoft.com/net/download/thank-you/net472?survey=false
And then successfully installed the patch.
Now Matlab detects the alternative compiler.
mex -setup
To choose a different C compiler, select one from the following:
lcc-win32 mex -setup:'C:\Program Files\MATLAB\R2015b\bin\win32\mexopts\lcc-win32.xml' C
Microsoft Windows SDK 7.1 (C) mex -setup:C:\Users\John\AppData\Roaming\MathWorks\MATLAB\R2015b\mex_C_win32.xml C
And I am able to compile a 32-bit C Shared library ... finally.
Thanks again for your initial tip Walter.
Best wishes,
John

Sign in to comment.

More Answers (1)

yalin kou
yalin kou on 7 Oct 2018
We have a same trouble!

  0 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!