Unable to locate a C-compiler required by Stateflow and MATLAB Function blocks. Use 'mex -setup' to select a supported C-compiler.

I'm trying to use Matlab function. When I finish my simulation and click 'run' there is an error "Unable to locate a C-compiler required by Stateflow and MATLAB Function blocks. Use 'mex -setup' to select a supported C-compiler." I have no idea where is the 'mex-setup'. Could you fix that to me. Thanks in advance! Sorry with some mistakes in grammar. I'm not a native

 Accepted Answer

At the command line give the command
mex -v -setup
That will give you information about where it looked for compilers and what compilers it found on your system. You will likely find that you do not have one of the supported compilers installed.
You can look at https://www.mathworks.com/support/sysreq/previous_releases.html to see which compilers are supported for MATLAB and for Stateflow for your MATLAB release.

More Answers (4)

I am using Windows 7 Ultimate. Does that mean I can't use the compiler cause my Windows version is not on the supported list.

1 Comment

Which MATLAB release are you using?
You should be able to use MATLAB provided that your release indicates it is available for Windows 7, and provided that you have SP1 or later

Sign in to comment.

Sorry for late reply. After downloading and installing the software, There is one more error occurred "Making simulation target "DTC_sfun", . . . 'DTC_sfun.bat' is not recognized as an internal or external command, operable program or batch file. "

8 Comments

That usually indicates there was an error in generating the model. It would normally have displayed a bunch of lines before that showing the compilation process, and those lines give information about what worked or failed.
But how can I find the "DTC_sfun". I have no idea what it is
DTC_sfun is automatically created for a model named DTC . Do not worry about the fact that it does not already exist: when you fix your model, MATLAB will create DTC_sfun
I still don't know what is wrong with my model. Would you mind checking it to me
The only thing I see at the moment is that Code Generation stops immediately because your model contains discrete items (switches) but has been configured for a continuous solver. Changing to a discrete solver solves that difficulty.
What action are you taking at the time you get the error about DTC_sfun ?
You should run the Upgrade Advisor, paying attention in particular to Simplified Initialization and "Check Usage of Outport Blocks". I am seeing cases of,
"Since the outport has an undefined 'Initial output' value and at least one of the sources of the outport is not a valid source to inherit the initial value, the outport uses the default ground value as the initial output."
You also have other difficulties related to the matter of whether to use continuous or discrete simulation. Some of your blocks expect continuous integration, which requires that one of the ode*() functions be run on your behalf to predict the outputs over finite steps. The Model Advisor recommends that you run discretization on your system.
To emphasize: using relays and switches is not theoretically compatible with continuous simulation, since relays and switches have discontinuous outputs and that cannot be modeled by any equation solver.
I was clicking the 'Run' button and the error appeared. I have changed from a continuous solver to a discrete solver but there is the same error
It is not possible to just switch to discrete solver: you also need to discretize the model.
I am having some difficulties getting the powergui library block to interface properly -- but that is a number of steps further than you are getting.
There should be a number of lines of output before the message about DTC_sfun: please post those.
Also, please remind me which MATLAB version you are using.

Sign in to comment.

There are 2 notifications and 1 error: 1. Making simulation target "DTC_sfun", ...
'DTC_sfun.bat' is not recognized as an internal or external command,
operable program or batch file.
2. Parsing successful for machine: "DTC"(#21)
3. Code Directory :
"D:\Simulations\TDD\slprj\_sfprj\DTC\_self\sfun\src"
Machine (#21): "DTC" Target : "sfun"
Chart "VECTOR Table" (#23):
.
"c1_DTC.h"
"c1_DTC.c"
Chart "SECTOR Detection" (#31):
.
"c2_DTC.h"
"c2_DTC.c"
"DTC_sfun.h"
"DTC_sfun.c"
"DTC_sfun_debug_macros.h"
Interface and Support files:
"DTC_sfun_registry.c"
Code generation successful for machine: "DTC"

Categories

Tags

Community Treasure Hunt

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

Start Hunting!