The conventional way of defining the entry point for a Symbian platform executable is by including "E32Main " in the application source. Since Symbian OS v9.3, you can define the entry point for an executable by including "main " instead of "E32Main ". With this approach, Symbian developers may easily port their C/C++ code to Symbian platform with less changes to the original source.
Symbian OS v9.3 and later releases provide an Open Environment (OE) to develop EXEs with the "main " entry point. The OE executables and libraries are identified by their targettype, which can either be STDEXE, STDDLL or STDLIB. An OE EXE may choose to have a wide character entry point using the MMP keyword, wcharentrypoint.
Here is a list of important differences between native Symbian platform executables and OE executables:
Native Symbian platform EXEs use "E32Main " entry point, whereas OE EXEs use "main " entry point.
The UIDs used to identify native Symbian platform EXEs and DLLs are different when compared to OE EXEs and DLLs.
In a native Symbian platform executable, the functions and data symbols with extern linkage are exported only if IMPORT_C /EXPORT_C declarations are found in the header or source files. In a OE executable, all functions and data symbols with extern linkage are exported by default without IMPORT_C /EXPORT_C declarations in the header or source files.
The libraries required by a native Symbian platform executable/library have to be listed explicitly in the MMP file, whereas for an OE executable/library they are included by default.
The native Symbian platform EXEs and DLLs does not have symbol lookup, whereas OE EXEs and DLLs support symbol lookup using dlsym.
A native Symbian platform EXE, DLL or LIB must include the path to standard APIs in the mmp file. For an OE EXE, DLL or LIB the build system includes ${EPOCROOT}epoc32/include/stdapis as the default path for header files.
The build system has been modified to support compilation of C++ source files with extensions “.cc ”, “.cxx ” and “.c++ ”. This change is applicable to both OE and native Symbian platform executables and libraries. That is, from Symbian OS v9.3 onwards a native Symbian platform or an OE executable/library can be built using C++ source files with extensions “.cc ”, “.cxx ” and “.c++ ”.