diff -r 000000000000 -r 89d6a7a84779 Symbian3/SDK/Source/GUID-C7589C93-B517-4251-ACFB-B03E07993242.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-C7589C93-B517-4251-ACFB-B03E07993242.dita Thu Jan 21 18:18:20 2010 +0000 @@ -0,0 +1,51 @@ + + + + + +Hybrid +Applications with Symbian C++ and Standard C +

If the developers want to use any of the P.I.P.S. APIs while writing some +Symbian application, they need to link to the corresponding library. The only +difference being that the developer does not have to link with the STATICLIBRARY libcrt0.lib in +the MMP file.

+

There are no additional P.I.P.S. specific changes that need to be done +in the source file in this case. This is possible, because the P.I.P.S. developer +of does not have to call any library initialization routine before use or +cleanup routine after use.

+

Some of the P.I.P.S. APIs assume that a cleanup stack is created and there +is a top-level TRAP. If the developer does not create either of the two, calling +such APIs may lead to application crash.

+In a hybrid application, the user must make sure that the +cleanup stack is created and a top-level TRAP marker is done. +

Hybrid application can also contain threads created using both RThread::Create() and pthread_create(), +and can still use P.I.P.S. APIs in both the threads. In case of RThread::Create() the +developer has to create cleanup stack and a top level TRAP for this thread +in the thread entry Function, if it is required; else this thread may crash +or panic.

+

An application can have both C++ and C source codes. In this case, in order +to give C linkage to C++ code- that is calling a function defined in a C++ +file that may have C++ code, use extern ā€œCā€. For example:

+// File: sample.c + void OtherFoo(); + + void Foo() { + OtherFoo(); + } + +// File: useme.cpp + + extern ā€œCā€ { + void OtherFoo() { + //Can use any C++ code here + //Can use Symbian C++ code here + } + } + +
\ No newline at end of file