This page shows how to compile and install the Enlightenment Foundation Libraries (EFL) with C# bindings support, and explains how to build and run applications using them.
WARNING | ||
---|---|---|
![]() |
Some C# classes are currently in BETA state They should only be used for experimenting and NOT for any product development. These classes are marked as BETA in the reference documentation. |
![]() |
You need a compatible version of Mono (5.0 or higher).
NOTE: Currently the C# bindings do NOT work with Mono 4.x.
The paths to the mcs
compiler and to the mono
application must be in the PATH
environment variable before compiling.
In order to have EFL on a Windows environment we highly recommend following this guide which accomplishes that using win-builds and MSYS2.
You need a compatible version of Mono (5.0 or higher).
You can use Mono binaries installed directly to your Windows system (i.e. outside the MSYS2 environment), you just need to make sure that the paths to the mcs.exe
compiler and to the mono.exe
application are in the PATH
environment variable in your MSYS2 terminal.
Using the default installation path, Mono binaries normally go in C:\Program Files\Mono
so in MSYS2 you can point to the binaries using the path /c/Program Files/Mono/bin
.
You can also permanently set this in your /etc/profile
in MSYS2 adding something like this at the end of the file:
export PATH="$PATH:/c/Program Files/Mono/bin"
If you used another installation path to Mono just adjust the paths used.
NOTE: It is advisable to add the Mono path at the end of the
PATH
environment variable, like in the example above. Mono has its own version of some applications (likepkg-config
) which can take priority over the ones from MSYS2 and cause things to fail.
Now you can use the MSYS2 console to compile, install and run EFL and your applications.
In order to compile and install EFL with C# binding support, on both Windows and Linux, just compile the EFL like the respective guides explain, and add the argument --enable-csharp-bindings
to the autogen.sh
or configure
command:
./autogen.sh --enable-csharp-bindings #other arguments
make -j4
sudo make install
NOTE: It is known that some portions of the code (typically the examples) can get a bit outdated from time to time, causing the building process to fail. The leading cause for this is a missing dependency. Usually, reading the error message and installing the missing package solves the problem. If you cannot solve the problem by yourself, try contacting the community.
NOTE If you are using Visual Studio to write EFL C# applications, you should copy to the build directory or have them in the
PATH
environment libraries:libeflcustomexportsmono.dll
,libefl_mono.dll
and if you want to use Intellisense alsolibefl_mono.xml
. These libraries and XML file will be found at lib sub-directory of the prefix you install the library.
With EFL installed, you can compile EFL applications using pkg-config
to get the proper flags to use the C# bindings:
mcs your_app.cs -out:your_app.exe `pkg-config --libs efl-mono`
Otherwise, you have to manually point the compiler to the location of the EFL C# bindings library libefl_mono.dll
, like this:
mcs your_app.cs -out:your_app.exe -r:/home/my_user/efl/build/src/lib/efl_mono/libefl_mono.dll
To run your application you can either copy the EFL C# bindings library libefl_mono.dll
to your application folder or set the MONO_PATH
environment variable and then execute it using mono
. In both cases, you can use pkg-config
to get the right paths.
Example copying the library:
cp `pkg-config --variable=Libraries efl-mono` .
mono button_example_00.exe
Example setting MONO_PATH
:
export MONO_PATH=`pkg-config --variable=assemblies_dir efl-mono`
mono button_example_00.exe
Note that if you installed EFL in a path that is not directly accessible to pkg-config
or to your application you have to manually make it accessible somehow, for example, setting proper environment variables before compiling and running:
export PKG_CONFIG_PATH=/opt/my_install_prefix/lib/pkgconfig
export LD_LIBRARY_PATH=/opt/my_install_prefix/lib
Try the Hello World tutorial now to verify that everything works as expected.