Skip to Main Content Skip to Search
Home |   Select Country  Choose Country  |  Contact Us  |  Cart Store 
Create Account | Log In
Products & Services Industries Academia Support User Community Company

 

Product Support

What are my options for interfacing MATLAB® code with code in other programming languages like C, C++, or FORTRAN?


Index

  1. How do I call C or FORTRAN code from MATLAB?
  2. How do I call MATLAB from C or FORTRAN stand-alone programs?
  3. How do I convert my M-code into a C or C++ shared library?
  4. How do I know when I would need to buy MATLAB® Compiler™ and when I would need only MATLAB?

Section 1: How do I call C or FORTRAN code from MATLAB®?

You can call your existing C or FORTRAN programs from MATLAB by creating MEX-files.

What is a MEX file?
MEX is a built-in utility that enables you to call C or FORTRAN code in MATLAB by compiling your code into a MATLAB Executable called a MEX-file. MEX-files are dynamically linked subroutines that are called as regular MATLAB functions. This requires you to replace your application's main() with a special gateway function - called "mexFunction" - to pass inputs and outputs to and from MATLAB. MEX is discussed in the MATLAB External Interfaces Guide. For in-depth examples and other detailed MEX information, see the MEX-files Guide, Technical Note 1605. To use MEX, you do not need additional MathWorks products; all you need is MATLAB and a supported C or FORTRAN compiler. On 32-bit Windows, a supported compiler (LCC) is distributed with MATLAB. See Technical Note 1601 for a complete list of supported C compilers. For example, to compile foo.c into a MEX function, use the following syntax:

mex foo.c
The documentation has several examples of C MEX-files and FORTRAN MEX-files.

Can I create C++ or Fortran MEX-files?
Yes, you can create C++ MEX-files in MATLAB. For an example, look at file

mexcpp.cpp
in MATLABroot/extern/examples/mex, where "MATLABroot" is the root directory of your MATLAB installation.

Section 2: How do I call MATLAB from C or FORTRAN stand-alone programs?

The MATLAB Engine allows C or FORTRAN programs to communicate with a separate MATLAB process via pipes in UNIX and through ActiveX on Windows. For more information on the MATLAB Engine, see using the MATLAB Engine.

Section 3: How do I convert my M-code into a C or C++ shared library?

You can convert M-code into a C or C++ shared library using the MATLAB® Compiler™. This shared library can then be incorporated into a Visual Studio project, or be combined with a driver file into a stand-alone application. To compile your M-code, for example foo1.m and foo2.m, into a C shared library use the following syntax:

mcc -B csharedlib:libmyfoo foo1.m foo2.m
For an example on building a C shared library and a driver file, refer to the C shared library example of the documentation. It is further possible to integrate these shared libraries into Visual Studio applications in Visual Studio .NET 2003 and Visual Studio 2005.

Section 4: How do I know when I would need to buy MATLAB Compiler™ and when I would need only MATLAB?

If you have C or FORTRAN code and want to

  • generate MEX-files to execute C, C++, or FORTRAN code in MATLAB, or
  • link to a MATLAB session in order to execute MATLAB code in C, C++, or FORTRAN in a stand-alone program
  • you need MATLAB and a supported C, C++, or FORTRAN compiler to compile the source code.

    If you have C or C++ code as well as M-code and you want to

  • create a C or C++ shared library to integrate into an existing application and custom MATLAB code, or
  • create a COM/ .NET object from M-code using MATLAB Builder™ NE to integrate with an existing Visual Studio application, or
  • create an Excel plug-in from M-code using MATLAB Builder™ EX to integrate with an existing Excel project
  • you need MATLAB, MATLAB Compiler™, and a supported C, C++, or FORTRAN compiler to compile the source code.

    Contact support
    E-mail this page
    Print this page