"mex -setup" または "mbuild -setup" で MinGW64 コンパイラが検出されず、"supported compiler not detected" エラーが発生するのはなぜですか?

MinGW64 コンパイラをインストールしましたが、"mex -setup"(または "mbuild -setup")を実行すると "supported compiler not detected" エラーが表示されるか、MATLAB のコンパイラ選択肢に MinGW64 が表示されません。

 Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 30 de Jun. de 2026 a las 0:00
MinGW64 は Windows 向けの GNU C/C++/Fortran コンパイラの無料かつオープンソースの実装です。MATLAB Add-On を使用して MinGW64 をインストールします。
上記の方法で MinGW64 をインストールした場合でも、環境変数やその他の要因により MATLAB が正しくインストールされた MinGW64 を認識できないことがあります。以下の手順に従ってトラブルシューティングを行います。問題が解決するまで順に実行します。
Step 1. MinGW64 はどこにインストールされていますか?
"getenv" を使用して、MinGW64 のルートフォルダが MATLAB の検索対象に含まれているか確認します。MinGW64root フォルダは "x86\_64-w64-mingw32" フォルダの親フォルダです。以下の例では、MinGW64root フォルダはデフォルトの場所に存在します:
>> getenv("MW_MINGW64_LOC")
ans =
'C:\ProgramData\MATLAB\SupportPackages\R2026a\3P.instrset\mingw_w64.instrset'
出力が有効なパス(上記の例のような場合)であれば Step 2 に進みます。  
出力が空配列の場合は、MinGW64 のルートフォルダを特定し、MATLAB に設定します。例えば以下のように設定します:
>> setenv("MW_MINGW64_LOC", "C:\Users\mingw63")
Step 2. コンパイラの実行ファイルは存在しますか?
" isfile " を使用して、MinGW64 ルートフォルダ内に "g++.exe" が存在するか確認します。"g++.exe" は MinGW64 ルートフォルダ内の "bin" サブフォルダにあります。例えば:
>> isfile('C:\\ProgramData\\MATLAB\\SupportPackages\\R2024b\\3P.instrset\\mingw_w64.instrset\\bin\\g++.exe')
ans =
logical
1
実行ファイルが存在する場合("isfile" が 1 を返す)は Step 3 に進みます。  
存在しない場合は MinGW64 が完全にインストールされていない可能性があるため、再インストールします。
Step 3. コンパイラのターゲットマシンは正しいですか?
上記の MinGW64 の "g++.exe" のパスを使って "system" コマンドを実行し、ターゲットマシンを確認します。
>> system('C:\\ProgramData\\MATLAB\\SupportPackages\\R2026a\\3P.instrset\\mingw_w64.instrset\\bin\\g++.exe -dumpmachine')
x86_64-w64-mingw32
ans =
0
出力が "x86\_64-w64-mingw32" の場合は正常です。Step 4 に進みます。  
出力が "The system cannot find the path specified." の場合は、Windows のレジストリ内の "Command Processor" 設定を確認します。"AutoRun" キーが設定されていると、"cmd.exe" の出力に影響し、MEX の設定処理が失敗する可能性があります。
1. Local Machine(HKLM)の設定を確認します。以下の例では "AutoRun" キーは存在しません。
>> [ok, txt] = system('reg query "HKLM\SOFTWARE\Microsoft\Command Processor"')
ok =
0
txt =
'
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
CompletionChar REG_DWORD 0x9
DefaultColor REG_DWORD 0x0
EnableExtensions REG_DWORD 0x1
InteractiveExtensionLevel REG_DWORD 0x1
PathCompletionChar REG_DWORD 0x9
LockBatchFilesWhenInUse REG_DWORD 0x0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\KnownPackageManagers
'
2. Current User(HKCU)の設定を確認します。以下の例では "AutoRun" が設定されています。
>> [ok, txt] = system('reg query "HKCU\SOFTWARE\Microsoft\Command Processor"')
ok =
0
txt =
'
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor
AutoRun REG_EXPAND_SZ if exist "C:\Users\gkepler\AppData\Local\miniconda3\condabin\conda_hook.bat" "C:\Users\gkepler\AppData\Local\miniconda3\condabin\conda_hook.bat"
'
"AutoRun" エントリが存在しない場合は Step 4 に進みます。  
存在する場合は削除します。レジストリの編集方法については Windows のドキュメントを参照します。
Step 4. "ComSpec" 環境変数の値は何ですか?
"ComSpec" 環境変数はコマンドインタープリタを指定するもので、通常は "cmd.exe" です。この値がデフォルト以外に設定されていると、コマンドプロセッサの出力に影響して設定処理が失敗する可能性があります。"system" コマンドで確認します。
>> system('echo %ComSpec%')
C:\WINDOWS\system32\cmd.exe
ans =
0
出力が "C:\WINDOWS\system32\cmd.exe" の場合は Step 5 に進みます。  
それ以外の場合は、非標準の "cmd.exe" により問題が発生している可能性があります。以下の手順でデフォルト値に戻します。
1. "C:\WINDOWS\system32\cmd.exe" が存在し、正常に動作するか確認します。
>> system('C:\WINDOWS\system32\cmd.exe')
Microsoft Windows [Version 10.0.26100.8457]
(c) Microsoft Corporation. All rights reserved.
出力に "Microsoft Windows" とバージョン情報が表示されれば正常です。問題がなければ以下の MATLAB コマンドで "ComSpec" を再設定します。
set ComSpec=C:\WINDOWS\system32\cmd.exe
Step 5. テクニカルサポートへの連絡
上記すべての手順で解決しない場合は、MathWorks テクニカルサポートに連絡します。Step 1 ~ Step 4 の情報と、以下のコマンドの出力をテキストファイルで提供します。
>> mex -setup -v

Más respuestas (0)

Preguntada:

el 30 de Jun. de 2026 a las 0:00

Respondida:

el 30 de Jun. de 2026 a las 5:32

Community Treasure Hunt

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

Start Hunting!