An implementation collection's project file has statements as shown below.
There are slight differences depending on the version of Symbian OS you are using. The differences reflect the introduction of platform security into Symbian OS v9.0 and later versions.
TARGET
is a standard DLL name
TARGETTYPE
is ECOMIIC
the first number in the UID
statement is the ECom DLL
recognition UID, 0x10009D8D, followed by the unique UID for this DLL. That is
the same UID that is specified in the dll_uid
member in the
registration resource file
RESOURCE
must specify the implementation's
registration resource file
SYSTEMINCLUDE
must specify
\epoc32\include\ecom
LIBRARY
must specify ecom.lib
// ExampleInterfaceImplementation.mmp
//
TARGET ExampleInterfaceImplementation.dll
TARGETTYPE ECOMIIC
// ECom Dll recognition UID followed by the unique dll UID
UID 0x10009D8D 0x10009DB0
SOURCEPATH \ExampleInterfaceImplementation
SOURCE ExampleInterfaceImplementation.cpp
USERINCLUDE \ExampleInterfaceImplementation \inc
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\ecom
RESOURCE 10009DB0.rss
LIBRARY euser.lib
LIBRARY ECom.lib
Implementation collections are built into the
\system\libs\plugins\
directory.
TARGET
is a standard DLL name
The plug-in DLL file is stored with the other binaries on the drive
in the common \Sys\Bin
directory. ECom will not discover plug-ins
installed in the pre v9.1 location \System\Libs\Plugins
.
TARGETTYPE
is PLUGIN
The first number in the UID
statement is the ECom DLL
recognition UID, 0x10009D8D, followed by the unique UID for this DLL. That is
the same UID that is specified in the dll_uid
member in the
registration resource file.
The plug-in should be given appropriate platform security
capabilities with a CAPABILITY
statement. If the plug-in is given
no capabilities, it will only be usuable by client processes also with no
capabilities. For more information, see ECom and the Platform Security Architecture.
From v9.1, the name of the registration resource file must be the
same as that of the executable: for example, if the plug-in is
foo.dll
, then its registration resource file must be called
foo.rsc
. This is because ECom uses the names of the registration
resource file to find the plug-in DLLs.
A simple START RESOURCE
statement of the form:
START RESOURCE foo.rss
END
will build a file foo.rsc
. Registration resource files
are always built into the target directory \Resource\Plugins
. The
build tools set this directory correctly without you needing to set it in the
project file.
Before v9.1, the registration resource file did not have the same
name as the DLL, but was required to be named after the UID3 of the DLL. Where
the registration resource source file is still named after the UID3, the built
resource file can be renamed to be the same as the DLL, using the
TARGET
keyword. For example:
START RESOURCE 10009DB0.rss
TARGET foo.rsc
END
This builds the 10009DB0.rss
source file correctly
into \Resource\Plugins\foo.rsc
.
SYSTEMINCLUDE
must specify
\epoc32\include\ecom
LIBRARY
must specify ecom.lib
// ExampleInterfaceImplementation.mmp
//
TARGET ExampleInterfaceImplementation.dll
TARGETTYPE PLUGIN
// ECom Dll recognition UID followed by the unique dll UID
UID 0x10009D8D 0x10009DB0
VENDORID 0x70000001
CAPABILITY All -TCB
SOURCEPATH \ExampleInterfaceImplementation
SOURCE ExampleInterfaceImplementation.cpp
USERINCLUDE \ExampleInterfaceImplementation \inc
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\ecom
START RESOURCE 10009DB0.rss
TARGET ExampleInterfaceImplementation.rsc
END
LIBRARY euser.lib
LIBRARY ECom.lib