The 25 days of C++mas - December 1 - C++Builder XE3 64-bit compiler

By: David Intersimone

Abstract: David I discusses the new C++Builder 64-bit compiler

This is a copy of a blog post from David I's Sip from the Firehose blog. Click to blog post title below to see the original blog post and comments.

  The 25 days of C++mas - December 1 - C++Builder XE3 64-bit compiler

C++Builder XE3, Embarcadero’s multi-platform C++ development solution for creating native applications for Windows and Mac, delivers the best of both worlds - a highly compliantC++11 64-bit Windows toolchain with an agile development solution. Now you can use the latest C++ features and libraries in your 64-bit Windows applications while you speed your development process with C++Builder’s agile, visual development environment. Embarcadero® C++Builder® XE3, with FireMonkey®, is the fastest way to deliver native applications multiple devices and operating systems including Windows and Mac, allowing developers to dramatically reduce coding time and build applications 5x faster.

The upcoming C++Builder XE3 64-bit compiler will include the following language and library support:

  • C++98, C++TR1, and C++11 language standards
  • ANSI C, ISO C, C99, and C11 language standards
  • Dinkumware standard C and standard C++ libraries version 5.3: Standard Template Library (STL), Standard C Library, Standard C Library Headers
  • Boost C++ libraries version 1.50
  • High-performance 64-bit code generation
  • Agile C++ language extensions

With C++Builder XE3 you can build VCL and FireMonkey 32-bit applications for Windows and Mac OS X. For 32-bit we provide Dunkumware STL version 5.01 and Boost version 1.39 libraries. If you build for 64-bit Windows then the IDE will use Dinkumware 5.3 and Boost 1.50. If you want to use one codebase for your Windows (32/64) and Mac OSX applications first build your VCL or FireMonkey application project and debug it for Win32 and then add the Win64 target platform, rebuild and test.

Some compiler and Windows differences to be aware of (most of the time the compiler and RTL will take care of things for you unless you have platform specific code):

  • 64-bit Windows Applications use the familiar Windows API
  • Windows API calls must be 64-bit versions.
  • Try blocks are supported in 64-bit Windows programs.
  • A 64-bit Windows application can use a 32-bit Windows type library (as some 64-bit MS Office applications do).
  • Cannot mix 32-bit and 64-bit code in the same process.
  • DLLs, components, libraries, and packages require that you compile or install separate 32-bit Windows (design-time) and 64-bit Windows (run-time) versions if you want to use the Form Designer.
    64-bit Windows is needed for OS extensions, shell extensions.
  • The size of LRESULT, WPARAM, and LPARAM all expand to 64 bits, so message handlers will have to be checked for inappropriate casts.

Object and Library file formats are different in the 32-bit and 64-bit C++ compilers.

  • BCC32 and its associated tools use OMF in .obj and .lib files
  • BCC64 uses ELF in .o and .a files
  • When you migrate a 32-bit Windows application to 64-bit Windows, you must change references to .lib and .obj to be .a and .o, respectively.
  • Where possible, object and library file extensions should be removed. When necessary, as in custom scripts, the extension must be changed or made conditional with version detection.

Support for Inline assembler in the 32-bit and 64- bit C++ compiler

  • C++Builder 32-bit style inline assembly is not supported in the 64-bit compiler.
  • The C++ 64-bit compiler does support inline assembly using the line-by-line AT&T syntax, not the more familiar block-of-Intel syntax.
  • Functions can be written entirely in assembly (using a separate assembler) and may be linked into your program.

Watch/Download the C++Builder 64-bit Compiler Preview

This short preview video discusses the C++Builder XE3 compiler support for building 64-bit VCL and FireMonkey Windows applications. C++Builder XE3 delivers the best of both worlds - a highly compliant C++11 64-bit Windows toolchain with an agile development solution. Several C++ applications are demoed showing how you can build 64-bit applications and also use the latest C++ features and libraries. Also discussed in the preview video are some of the differences between the C++Builder XE3 32-bit and 64-bit compiler.  Watch the video on YouTube at You can also download the MP4 video file at  The preview video is 9 minutes long.

CodeRage 7 C++ conference, December 10-12, 2012

CodeRage 7 C++ conference starts next Monday, December 10, 2012 at 6am Pacific Standard Time (14:00 UTC).  We’ll have 3 days of C++ sessions including my special live, online conversation with Bjarne Stroustrup at 8am PST (16:00 UTC) on Monday.  Some of the C++ sessions you won’t want to miss are included in my blog post on November 21 -

Happy C++mas!

During the first 25 days of December leading up to Christmas, I will blog about the upcoming release of the C++Builder 64-bit compiler for Microsoft Windows and C++Builder XE3 support for building VCL and FireMonkey 2 applications (sorry these first two are late).  if you have a spare moment, also check out my 2010 blog post, "A Developer’s Night Before Christmas".

Server Response from: ETNASC03