2017-10-04 18:37:32 +00:00
|
|
|
|
|
|
|
========================================
|
|
|
|
STLport README for eMbedded Visual C++ 3
|
|
|
|
========================================
|
|
|
|
|
|
|
|
by: Michael Fink, vividos@users.sourceforge.net, last edited 2005-11-15
|
|
|
|
|
|
|
|
============
|
|
|
|
Introduction
|
|
|
|
============
|
|
|
|
This document describes how STLport can be compiled and used with Microsoft
|
|
|
|
eMbedded Visual C++ 3.
|
|
|
|
|
|
|
|
For any further comments or questsion visit STLport mailing lists
|
|
|
|
http://stlport.sourceforge.net/Maillists.shtml or forums
|
|
|
|
https://sourceforge.net/forum/?group_id=146814
|
|
|
|
|
|
|
|
|
|
|
|
=============
|
|
|
|
Prerequisites
|
|
|
|
=============
|
|
|
|
To build and use STLport you will need following tools and libraries:
|
|
|
|
- eMbedded Visual C++ 3.0
|
|
|
|
- latest CVS version of STLport, use info from page
|
|
|
|
'http://stlport.sourceforge.net/CVS.shtml' to get it.
|
|
|
|
Note that you may have to get a different branch, please check out the
|
|
|
|
STLport forum "Announcements" which sourcecode is being worked on.
|
|
|
|
|
|
|
|
================
|
|
|
|
Building STLport
|
|
|
|
================
|
|
|
|
Note: if you don't plan to use the iostreams part of STLport (via the define
|
|
|
|
_STLP_NO_IOSTREAMS), you don't have to build the library. You can skip straight
|
|
|
|
to the "Using STLport" section.
|
|
|
|
|
|
|
|
If you want to compile for the Pocket PC 2002 SDK (which in most cases you want)
|
|
|
|
be sure to set the PLATFORM environment variable to "Pocket PC 2002", e.g. with
|
|
|
|
this command:
|
|
|
|
|
|
|
|
set PLATFORM=Pocket PC 2002
|
|
|
|
|
|
|
|
Open a command line prompt and execute the batch file that sets up compiling
|
|
|
|
for ARM or x86 processors. These files usually are in a folder like
|
|
|
|
'C:\Program Files\Windows CE eMbedded Tools\EVC\WCE300\BIN\' and are called
|
|
|
|
WCEARM.bat and WCEx86.bat. Check if the environment variables are set up
|
|
|
|
properly after that call. You can also adjust the batch files to have the
|
|
|
|
PLATFORM variable set automatically.
|
|
|
|
|
|
|
|
Go into STLport's 'build\lib' folder and type:
|
|
|
|
|
|
|
|
configure.bat -c evc3
|
|
|
|
|
|
|
|
The makefiles are configured with the given settings. Call configure.bat with
|
|
|
|
the --help option to see all options. The program automatically tells you which
|
|
|
|
command line to use. If you want to install the libraries, add the "install"
|
|
|
|
target as follows:
|
|
|
|
|
|
|
|
nmake /fmsvc.mak install
|
|
|
|
|
|
|
|
All libraries (debug, stldebug, release) are now built, static and shared
|
|
|
|
ones. Import libraries (.lib files) are put in the 'lib\evc3-arm' folder, DLLs
|
|
|
|
are put in the 'bin\evc3-arm' folder. If you use another target platform, the
|
|
|
|
name of the folder is changed accordingly, e.g. evc3-x86 for emulator files.
|
|
|
|
|
|
|
|
Once STLport is built you can decrease the size of the STLport folder by
|
|
|
|
removing intermediate build files. This is done with the following command:
|
|
|
|
|
|
|
|
nmake /fmsvc.mak clobber
|
|
|
|
|
|
|
|
Note: MIPS platform is also available for build, but it may not compile or work
|
|
|
|
properly. Use with caution!
|
|
|
|
|
|
|
|
===============
|
|
|
|
Testing STLport
|
|
|
|
===============
|
|
|
|
You can use the unit tests to verify STLport behaves correctly. Change into
|
|
|
|
STLports 'build\test\unit' folder and type:
|
|
|
|
|
|
|
|
nmake /fmsvc.mak install
|
|
|
|
|
|
|
|
If you want to build the unit tests for the emulator, you have to reconfigure
|
|
|
|
STLport with the configure.bat, as described above.
|
|
|
|
|
|
|
|
Once the unit tests are built, upload the binary (found in the 'bin\evc3-arm'
|
|
|
|
folder) to your device or emulator and start it (the test runs for about 30
|
|
|
|
seconds, depending on the speed of the device). The file 'stlp_test.txt' is
|
|
|
|
created in the root folder of the device, which contains the unit test
|
|
|
|
results. It should report no errors.
|
|
|
|
|
|
|
|
=============
|
|
|
|
Using STLport
|
|
|
|
=============
|
|
|
|
Adjust your include and link paths in eVC3 in 'Tools -> Options -> Directories'
|
|
|
|
and add the paths for all platforms and CPUs on which you want to use STLport.
|
|
|
|
In the include files add the path to STLport's 'stlport' folder. Make sure it
|
|
|
|
is the first directory listed there. Add STLport's 'lib\evc3-arm' or
|
|
|
|
'lib\evc3-x86' (depending on what target you use) folder for the library files
|
|
|
|
(order of paths doesn't matter here).
|
|
|
|
|
|
|
|
There are some preprocessor defines that control usage of the STLport in evc3
|
|
|
|
projects:
|
|
|
|
|
|
|
|
Define the symbol _STLP_USE_STATIC_LIB when you want to statically link against
|
|
|
|
STLport. The linker will remove unused classes and methods then, saving some
|
|
|
|
space in the executable.
|
|
|
|
|
|
|
|
If you don't want to use the iostreams part of the library, you can specify the
|
|
|
|
define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the
|
|
|
|
library.
|
|
|
|
|
|
|
|
STLport uses automatic linking to find the proper .lib file. If you want to see
|
|
|
|
what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK.
|
|
|
|
When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you
|
|
|
|
have to specify the proper .lib file in the Project Settings, on the "link" tab.
|
|
|
|
The .lib names have the following syntax:
|
|
|
|
|
|
|
|
stlport(d|stld)[_static].<STLport-Version>.lib
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
stlport_static.5.0.lib - static release version, Version 5.0.0
|
|
|
|
stlportd_50.lib - dll debug version, Version 5.0.0
|
|
|
|
|
|
|
|
Note that usage of the _STLP_DEBUG mode is currently not recommended for
|
|
|
|
eMbedded Visual C++ builds using the ARM compiler, due to a compiler bug.
|
|
|
|
|
|
|
|
When using STLport together with MFC, be sure to include the MFC headers first,
|
|
|
|
then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly
|
|
|
|
recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in
|
|
|
|
your project settings or in stlport/stl/config/user_config.h.
|
|
|
|
|
|
|
|
Now you should be ready to use STLport.
|
|
|
|
|
|
|
|
============
|
|
|
|
Known issues
|
|
|
|
============
|
|
|
|
- Unit Tests in _STLP_DEBUG mode (target 'stldbg-shared') fails in
|
|
|
|
__stl_debug_engine::_M_detach() for several tests due to unknown reasons.
|
|
|
|
A compiler bug in the ARM compiler is suspected.
|
|
|
|
There is currently no workaround for this bug. It is recommended to not use
|
|
|
|
_STLP_DEBUG mode.
|
|
|
|
|
|
|
|
- Resource compiler issue:
|
|
|
|
|
|
|
|
The resource compiler is not a C++ compiler, it is a compiler that translates
|
|
|
|
resource files, i.e. files that describe dialogs, strings, version information
|
|
|
|
and other parts of the GUI on MS Windows systems.
|
|
|
|
|
|
|
|
The problem is that it includes files from the C/C++ include path, and
|
|
|
|
STLport uses mechanisms the resource compiler can't handle, e.g. using macro
|
|
|
|
names longer than 31 characters.
|
|
|
|
|
|
|
|
The workaround is to guard all affected headers (stdio.h, string.h, stdarg.h,
|
|
|
|
stdlib.h, ctype.h) against this. The resource compiler is detected by the
|
|
|
|
macro RC_INVOKED.
|
|
|
|
|
|
|
|
- See also README.evc4 issues.
|