This example application shows a simple EXE and DLL written using
P.I.P.S. (P.I.P.S. Is POSIX on Symbian Platform). It also shows the
dynamic lookup of symbols by name mechanism used in Unix-like operating
systems, instead of the native Symbian Platform lookup by ordinal
mechanism. P.I.P.S., from Symbian OS v9.3, provides APIs from libdl
library to implement this lookup by name mechanism.
The example defines a simple DLL using the P.I.P.S. STDDLL
target type, with an exported function. It also creates a simple
EXE, using the STDEXE
target type, which calls the
DLL's exported function using the lookup by name mechanism. These
P.I.P.S. specific target types are required to enable the specific
options for compilers and linkers to generate P.I.P.S. executables
and to make symbol information available in the executable image.
Click on the following link to download the example: HelloWorldExample.zip
Click: browse to view the example code.
The following sections provide more information about the example.
Creating a simple DLL using P.I.P.S. STDDLL target type
The example creates
a DLL file that declares and defines an exported function. The target
type of this DLL file is STDDLL
. It contains a header
and a source file:
helloworlddllexample.h
: this declares a function with external linkage. Note that for a STDDLL
library, functions and data with external linkage
are exported by default, without any requirement for IMPORT_C
and EXPORT_C
declarations in header or source files.
helloworlddllexample.cpp
: this defines the function declared in the header file, which displays
a hello world message to the console.
Creating a simple EXE using P.I.P.S. STDEXE target type
The example creates an EXE file which calls the exported
function of the loaded DLL. The target type of this EXE file is STDEXE
. It calls the following libdl
functions to use the lookup by name mechanism:
dlsysm(): This function gets the address of a symbol defined within the DLL
loaded by the dlopen()
call.
dlclose(): This function informs the system that the DLL loaded by a previous dlopen()
call is no longer needed by the application.
The EXE links to libdl.lib
to use these
functions.
The HelloWorldExample
builds two files, a DLL file helloworlddllexample.dll
, and an EXE file helloworldexeexample.exe
,
in the standard locations.
To run the example, start helloworldexeexample.exe
from the file system or from
your IDE. After launching the executable, depending on the emulator
you are using, you may need to navigate away from the application
launcher or shell screen to view the console.