Search documentation of Erlang System Documentation

# Problem Example

Copy Markdown View Source

## Description

A common interoperability situation is when you want to incorporate a piece of code, solving a complex problem, in your Erlang program. Suppose for example, that you have the following C functions that you would like to call from Erlang:

    /* complex.c */

    int foo(int x) {
      return x+1;
    }

    int bar(int y) {
      return y*2;
    }

The functions are deliberately kept as simple as possible, for readability reasons.

From an Erlang perspective, it is preferable to be able to call `foo` and `bar` without having to bother about that they are C functions:

    % Erlang code
    ...
    Res = complex:foo(X),
    ...

Here, the communication with C is hidden in the implementation of `complex.erl`. In the following sections, it is shown how this module can be implemented using the different interoperability mechanisms.

← Previous Page Overview
Next Page → Ports