Pocket PC 2003 RTTI Patch

Microsoft has now released a library for RTTI support for Pocket PC 2003.  Their library works for both Pocket PC 2003 devices and the Pocket PC 2003 emulator.

Note that the Microsoft solution will make your application larger.  You may still choose the Entrek solution (below) which merely leverages the native support included in the Pocket PC 2003 OS (device only, not emulator) by forwarding calls your application makes directly to the OS implementation.

There is no implementation in the Entrek solution, so your application size does not change.

Here is a link to the Microsoft library: http://support.microsoft.com/default.aspx?scid=kb;[LN];830482.

Information Regarding the Entrek Solution

Microsoft introduced C++ exception handling and runtime type information (RTTI) to Windows CE 4.0.

Pocket PC 2003, based on Windows CE 4.2, was configured to include both C++ exception handling as well as RTTI.  However, there was an error in generating the Pocket PC 2003 SDK such that an application which uses RTTI fails to build.  When building a Pocket PC 2003 application which uses RTTI, it will compile without error.  However, an "unresolved external" error occurs at link time.

Solution

Entrek Software, Inc. is happy to provide a solution to this problem.  Our solution requires linking to RTTIPatch.lib and installing RTTIPatch.dll to the \Windows directory of the target device.  There is no requirement to include any headers.

Our solution is simple.  The library simply resolves the unresolved symbols.  The DLL provides entrypoints for those functions that are merely forwarders to the actual implementation provided in coredll.dll.  That is, there is no implementation of RTTI in our solution.  It leverages the existing implementation provided by the operating system.  The "source" code is simply a module definition file (which may be viewed below and you may include directly in your project). 

Please note that the /GX switch is needed on the compiler command line to enable C++ SEH.  There is no option in the Microsoft eVC 4.0 Project Settings/C++ tab that will add this switch.  You must manually modify the command line to add /GX.

Please note that this solution is only for ARM/XScale-based Pocket PC 2003 devices.  It will not work on the Pocket PC 2003 emulator as this configuration of Pocket PC 2003 lacks RTTI support.  The x86 module definition file is only provided as a reference.  It can be used for other Windows CE x86 configurations that have the same problem.

License

By downloading these files, you agree to the following terms.

These files are the property of Entrek Software, Inc.  Entrek Software, Inc provides you a free license to use them. The RTTIPatch.dll file may be included with your Pocket PC 2003 application and freely distributed only with your application.  You may not redistribute RTTIPatch.dll in any other way, nor can you redistribute RTTIPatch.lib at all.

You may use the provided binaries, or you may use RTTIPatch.def in your own project DLL.  By including in your own project DLL, you remove the dependency on RTTIPatch.dll and, most importantly, the 64KB of virtual address space the operating system would typically reserve for it.

Disclaimer

These files are provided "as is".  Entrek Software, Inc. provides no warranty nor assumes any liability for their usage.

These files are not supported.  We welcome your comments and suggestions; however we cannot offer technical support for these files.  Please send your comments and suggestions to Entrek Information.

If you would like to be informed about additions and updates to Entrek Software, Inc. products, please send email to Entrek Information.

The logo, service marks, trademarks, and/or trade dress of Entrek Software, Inc are owned  exclusively by Entrek Software, Inc. All other product and company names herein may be trademarks of their respective owners.

Download RTTIPatch.lib

Download RTTIPatch.dll

View X86RTTIPatch.def (for x86 targets only)

View RTTIPatch.def (all other CPUs)

Hit Counter

Copyright © Entrek Software, Inc.