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
spacer spacer spacer spacer spacer spacer

 

Product Support

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


MATLAB 6.5 (R13) or below


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 the Supported and Compatible Compiler list 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 for .NET to integrate with an existing Visual Studio application, or
  • create an Excel plug-in from M-code using MATLAB Builder for Excel 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