- Download OpenC/C++ Plugin
- Install it
That's all to use STL for Symbian C++
(The section below is copied from the help file of Nokia (The Standard C++ API Reference))
Changes to the MMP file
If developers want to use any of the Standard C++ library, they need to link to the corresponding library in the MMP file using the LIBRARY keyword.
If the application has main() as the entry point, the library libcrt0.lib must be specified as the first library otherwise, it will result in linker errors. The user must link to the Symbian OS euser.dll. This is required since the static library uses some of the services of the Symbian OS such as creating cleanup stack, and having a top level TRAP. All these details are hidden from the developer. The developer will write the application as if it were for the UNIX environment.
STATICLIBRARY libcrt0.lib
LIBRARY libc.lib
LIBRARY euser.lib // Needed in order to use Symbian services
The libcrt0.lib library is required if we are not going to write E32Main within our application (EXE). This static library has an implementation of E32Main within which it calls the library initialization method followed by calling main written by the developer. This static library also gets command-line arguments and passes the same to main.
If the application has E32Main() as an entry point, there is no need to link to libcrt0.lib like in the example below.
LIBRARY libc.lib
LIBRARY euser.lib
Add needed include paths
SYSTEMINCLUDE \epoc32\include\stdapis
SYSTEMINCLUDE \epoc32\include\stdapis\sys
SYSTEMINCLUDE \epoc32\include\stdapis\stlport
Linking of libstdcpp
The following snippet shows how to perform the linking to libstdcpp on an emulator:
#ifdef EPOC32
LIBRARY libstdcpp.lib
#else
FIRSTLIB ../udeb/libstdcpp.lib
STATICLIBRARY eexe.lib
#endif
Add the below option and macro in the MMP file
//This is required even if the wchar type is not used.
OPTION CW -wchar_t on
MACRO _WCHAR_T_DECLARED
EPOCSTACKSIZE 0x10000in the MMP file.
Example using main()
- Modify the MMP file as mentioned before.
- Do usual C++ style coding.
// Include Files
#include
#include
// This is a GCCE toolchain workaround needed when compiling with GCCE
// and using main() entry point
#ifdef __GCCE__
#include
#endif
using namespace std;
class myclass {
public:
void show(){cout<<"Hello World\n"; }
} ;
int main()
{
myclass obj;
obj.show();
cout<<"Press a character to exit!";
int c = getchar();
return 0;
}
0 comments:
Post a Comment