Using Carbide.c++ and P.I.P.S.

To be able to use P.I.P.S. and Carbide.c++ efficiently, perform the following steps:

  • Define the system include files required by P.I.P.S.. This is done in the System Options view in the Project Properties window.

  • Specify the needed P.I.P.S. libraries:
    • libc.lib must always be specified.

    • Libraries must be specified for all build configurations.

Note: The include paths for P.I.P.S. headers must be specified as well as the used P.I.P.S. libraries.

Note: This must be done for all possible build configurations.

Inclusion of libc.lib in the MMP file

libc.lib must be included in the MMP file for both the WINSCW as well as the target. The code will compile and link for WINSCW even if libc.lib is not mentioned in the MMP file, but will fail during execution. If libc.lib is not mentioned in the MMP file for the target, the code will compile but will fail during linking.

Order of the SYSTEMINCLUDE in the MMP file

Carbide.c++ 1.1 does not take into account the header file inclusion order as mentioned in the MMP file. This is a typical scenario when the user needs the headers from both P.I.P.S. and estlib.lib. Although, the order of the SYSTEMINCLUDE in the MMP file is:


epoc32\include\libc will be included first followed by epoc32\include\stdapis. (It might be included on the basis of alphabetical order).

This issue can be resolved by manually changing the project properties in carbide.c++ IDE. In order to change the Project Properties in Carbide.c++ IDE:

  1. Go to Project.

  2. Click on Property.

  3. Click on C \C++. Build and choose the ToolSettings Tab

Suppressing "illegal implicit conversion error"

The code that makes use of implicit pointer casts will not compile with the WINSCW compiler. The compilation breaks with "illegal implicit conversion error". However, the same code will compile with GCC compiler. A work around for this problem without changing the code is to define a pragma.