はじめに
※ レジストリをいじるので、本記事をもとに作業する場合は自己責任でお願いします。
MATLAB 2012bの64bitコンパイラ環境はVisual C++ 2010にする必要があるのだが、
Windows10においてはVisual C++ 2010且つ64bitコンパイラを用意するのはかなり難儀した。
よって、自分自身の忘備録として残しておく。
必要なもの
以下を入手
- VC2010 express
- SDK7.1(Microsoft Windows SDK for Windows 7 and .NET FrameWork 4 )
- https://www.microsoft.com/en-us/download/details.aspx?id=8442
- ※ 64bitOSの場合はGRMSDKX_EN_DVD.iso
- VC2010 expressのコンパイラを64bit化するのに必要。
- Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラム
- https://www.microsoft.com/ja-jp/download/details.aspx?id=4422
- これもVC2010 expressのコンパイラを64bit化するのに必要。
一応URLを書いてはいるが、マイクロソフトの都合で変わってしまう可能性は十分にある。
その場合は、頑張って探してください・・・。
手順
- VC2010 expressインストール
- VC2010 expressに含まれれている「VC2010再配布パッケージ」だけをアンインストール
- ※ これがあるとSDK7.1インストールに失敗する。
- 以下のレジストリを一旦「4.0.30319」に書き換える。
- ※ 元の数値はメモっとく。
- ※ この数値と同名ディレクトリがあり、一致していないと該当ディレクトリを見つけてくれないっぽい。
- これが原因でSDK7.1インストールに失敗する。
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version
- ※レジストリの値の書き換えができない場合は、該当ディレクトリ(ClientおよびFullのあたり)のアクセス権限を変更してから書き換える。
- SDK7.1(Microsoft Windows SDK for Windows 7 and .NET FrameWork 4 )インストール
- レジストリを元に戻す。
- 「Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラム」を適用
- SDK7.1がインストールできていないと当然失敗する。
- MATLABを起動してmex -setup
>> mex -setup
Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2012b/win64.html
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n? n
Select a compiler:
[1] Intel C++ 12.0 (with Microsoft Software Development Kit (SDK) linker)
[2] Intel C++ 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[3] Intel C++ 12.0 (with Microsoft Visual C++ 2010 linker)
[4] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[5] Intel Visual Fortran 12 (with Microsoft Software Development Kit (SDK) linker)
[6] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[7] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 Shell linker)
[8] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2010 linker)
[9] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[10] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker)
[11] Microsoft Software Development Kit (SDK) 7.1
[12] Microsoft Visual C++ 2005 SP1
[13] Microsoft Visual C++ 2008 SP1
[14] Microsoft Visual C++ 2010
[0] None
Compiler: 14
Warning: The default location for Microsoft Visual C++ 2010 compiler is:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0"
but either that directory does not exist or the configuration
is invalid.
Use C:\Program Files (x86)\Microsoft Visual Studio 10.0 anyway [y]/n? y
Please verify your choices:
Compiler: Microsoft Visual C++ 2010
Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
***************************************************************************
Warning: MEX-files generated using Microsoft Visual C++ 2010 require
that Microsoft Visual Studio 2010 run-time libraries be
available on the computer they are run on.
If you plan to redistribute your MEX-files to other MATLAB
users, be sure that they have the run-time libraries.
***************************************************************************
Trying to update options file: C:\Users\yokoshimaenaga\AppData\Roaming\MathWorks\MATLAB\R2012b\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2012b\bin\win64\mexopts\msvc100opts.bat
Done . . .
**************************************************************************
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/techdoc/matlab_external/bsflnue-1.html
Building with the -largeArrayDims option enables the new API.
**************************************************************************
登録キーの取得
このままだと30日の試用期間が過ぎるとコンパイルできなくなると思われる。
(もしかしたらVC++2010が使えなくなるだけでmexの作成はできるかもしれないが。)
以前は、VC++2010の「ヘルプ」の「製品の登録」から登録キーの作成ができたのだが、今は登録ページに飛べなくなっている。
「Visual Studio Subscriptions」からアカウントを作成するか、
VC++2017 expressをインストールして、こちらの「ヘルプ」の「製品の登録」から登録ページに飛ぶかをして対処する必要がある。
コメント