Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



The Erlang Plus Interface library (EPI) is a tool set of C++ classes to
easily build applications in C++ what comunicates with Erlang.

The intention of the library is to cover the holes that EI library offers:

	- An object oriented implementation
	- A simple API
	- Extensibility
	- Abstraction of comunication mechanism
	- Simplified management of incoming messages (mailboxes)

EPI is realased under the LGPL license. For details please see the file
"COPYING" distributed with EPI source code.

EPI works in a similar manner than jinterface the library for java

It have some differences:

	- All comunication is done throw MailBoxes, no matters if you use
		self or auto managed nodes.
	- Epi abstracts the comunication mechanism, and you can extend it with new
		mechanism (using ErlangTransport interface and ErlangTransportFactory)

NOTE: EPI is an alpha version and is probably full of bugs.

Where can I get it?

EPI is hosted at


In order to build EPI you need the following software:

	- Scons (
	- g++ (tested with version 3.3)

And the following libraries:

        Either OpenThreads or boost library is required:

	- OpenThreads library.

		I highly recomend get the sources from cvs:

	    cvs -d login
	    cvs -d co OpenThreadsUpdate

        - boost library (version 1.35.0 or above)

	- LibCWD for debug messages. Not needed if debug is disabled.
	- EI library (tested with version 3.5)

Configure and Building:

First configure epi creating the file epi-X.X.X/ with the following content:

-- 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< --
# EI Library path
# Openthreads path
# Libcwd path
LIBCWD_INC = '/path/to/libcwd/inc'
LIBCWD_LIB = '/path/to/libcwd/inc'

# debug build y/n
debug = 1
-- 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< --

if any path is unnecesary (libraries are installed), you can not set this
variables or set them to 0.

Once configured, simply execute:

$ scons

After build, headers will be located in epi-X.X.X/include and libraries in

Other targets are:

$ scons doc
$ scons check
$ scons sample

'scons -h' for more info.

You can set configuration options in command line:

$ scons EI_INC='/path/to/erl_interface/include/' \
	EI_LIB='/path/to/erl_interface/lib/' \


Actually the library can't be installed.

Using the library:

Actually the library is not installed, so you must include the headers from
the epi-X.X.X/include directory.

To use the EPI library simply include the "epi.hpp" file in your code.

Actually epi is a static library, and must be staticly linked. You must link
the ei and openthreads library too:

$ gcc mynode.cpp -I/path/to/epi/include -L/path/to/epi/lib -lepi -lei -lopenthreads


Documentation can be generated using Doxygen -
Just exec:

$ scons doc

and the documentation will be generated in docs/ directory.

Language Issues:

I known, and I'm sorry, my english is poor. I have to study a lot more.

Anyway I tried to document all the library code and specially all the public
interfaces. I think that is much better a comment like:

  /** This function return pointer which must be deleted */
  void *f();


  void *f();

is not? ;)

Bugs, comments, language corrections and other feedback:

You can send them all to Feedback is really appreciated.

I'm specially insterested in C++ coding suggestions (This is my first
C++ project).

Language corrections in documentation are also appreciated, and everyone can colaborate.

You can submit bug reports at


I can be contacted at:


Automatically exported from




No releases published


No packages published


You can’t perform that action at this time.