WinCE 4.x mit RTTI
« | 19 Jan 2025 | »Wenn ich von Windows CE
Builds spreche, dann handelt es sich um CE 5.0 oder neuer, denn das war
die Basis für das alte Windows Mobile und Industrie-Geräte
aus meiner Arbeitswelt.
Doch beim Test mit CE 4.2 (2003) Builds erhielt ich Fehler dieser Art:
1error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
Visual Studio 2005 kam aus der
Schachtel mit Support für alte Organizer unter dem Titel PocketPC2003.
Alte CMake Varianten bis v3.11
ermöglichten das Erstellen von Solutions für diese Plattform mit dem Generator:
Visual Studio 8 2005 Pocket PC 2003 (ARMV4)
Doch beim Bauen von C++ Code tauchen dann beim Linken zahlreiche Fehler
zur type_info VTable und auch fehlende std::exception Implementierungen
auf.
Beim Öffnen des Ordners
C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\PocketPC2003\Lib\armv4
fiel mir spontan die Bibliothek ccrtrtti.lib auf, die sich nach
RTTI anhörte und so fügte ich sie manuell zu den Link-Libraries hinzu,
und … siehe da … die Build lief fehlerfrei durch.
Es reicht also nicht die Option Enable Runtime Type Information
(also den /GR Switch) zu setzen, sondern man brauch auch noch ccrtrtti.lib
mit der Implementierung.
In CMake lautet die magische Formel auf:
Fazit
Die Pocket-PC-Reihe kenne ich nur vom Sehen und war für mich nie relevant. Es schadet aber nicht auf diese Plattform vorbereitet zu sein … selbst wenn sie heute als ausgestorben gilt.
Sobald meine Zeitmaschine fertig ist und ich ins Jahr 2005 zurückreise, bin ich froh, wenn ich die notwendigen Patches bereits parat habe. ;)