Knowledge Base

KB10900 - C++Builder XE5 & XE6 execution error related to generics TDictionary

C++Builder XE2, XE3, XE4, XE5 & XE6 has a problem properly linking generic classes like TDictionary<Srtring,Integer>. A workaround is to set in application option Link with runtime packages = false.

However version earlier the XE6 will start to report errors like:

[ilink32 Error] Error: Unresolved external 'toupper' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\RAD STUDIO\11.0\LIB\WIN32\DEBUG\RTL.LIB|System.RegularExpressionsAPI

A worakround is to place in a form .cpp code following lines:

  #pragma alias "toupper"    = "_toupper"
  #pragma alias "tolower"    = "_tolower"
  #pragma alias "isupper"    = "_isupper"
  #pragma alias "isalnum"    = "_isalnum"
  #pragma alias "isalpha"    = "_isalpha"
  #pragma alias "iscntrl"    = "_iscntrl"
  #pragma alias "isdigit"    = "_isdigit"
  #pragma alias "isgraph"    = "_isgraph"
  #pragma alias "isleadbyte" = "_isleadbyte"
  #pragma alias "islower"    = "_islower"
  #pragma alias "isprint"    = "_isprint"
  #pragma alias "ispunct"    = "_ispunct"
  #pragma alias "isspace"    = "_isspace"
  #pragma alias "isxdigit"   = "_isxdigit"
  #pragma alias "strchr"     = "_strchr"
  #pragma alias "strncmp"    = "_strncmp"
  #pragma alias "memcmp"     = "_memcmp"
  #pragma alias "memmove"    = "_memmove"

Created: April 24, 2014, Modified: August 04, 2016
follow us on Facebook  follow us on Twitter  follow us on Google +  follow us on LinkedIn  Embarcadero