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

Posted by on in Blogs
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 compliant C++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".

Gold User, Rank: 1, Points: 2466
David Intersimone (known to many as David I.) is a passionate and innovative software industry veteran-often referred to as a developer icon-who extols and educates the world on Embarcadero developer tools. He shares his visions as an active member of the industry speaking circuit and is tapped as an expert source by the media. He is a long-standing champion of architects, developers and database professionals and works to ensure that their needs are folded into Embarcadero's strategic product plans. David holds a bachelor's degree in computer science from California Polytechnic State University at San Luis Obispo, California.


  • Guest
    M Marshall Monday, 3 December 2012

    Why are the 32- and 64-bit compilers using different STL & Boost versions? That's a recipe for serious trouble as the same application built with each compiler will behave slightly differently due to bug fixes or other changes in one library but not the other.

    You should update the 32-bit compiler's libraries to match.

  • Guest
    E. Monday, 3 December 2012

    Can BCC64 optimize for a selected processor? Architecture?

    Can it use GPU? (like C++ AMP)

  • Guest
    David Intersimone Tuesday, 4 December 2012

    MM - BCC32 is our older compiler that does not support all of C++11. The 32-bit compiler currently only supports some of C++0x - This makes it impossible to support the latest libraries in our current 32-bit C++ compiler.

    If you build your project with BCC32 and test it - then you should, in general, be able to recompile with 64-bit target and thus avoid any language and library differences.

    Backporting the new Windows 64-bit compiler to 32-bit Windows and also to provide a 64-bit compiler for other platforms and processors is on our internal R&D roadmap.

  • Guest
    David Intersimone Tuesday, 4 December 2012

    E - BCC64 is a Win64 compiler for now using Intel processors. We will be supporting other processors and operating system platforms in the future including ARM processors and mobile devices. This is covered in our RAD Studio Mobile Roadmap article at

  • Guest
    E. Tuesday, 4 December 2012

    Is it possible to choose optimization for a specified processor? Using ICC I can set the optimization flag for Atom-processors (it really increases performance on Atom computer) or set selected specifications (for example, SSE an SSE2 and nothing more).

    In the roadmap, I haven’t found something about AMD (they still exist!). Why is there too much iOS, Mac OS, Android, but there is no Linux?

  • Guest
    David Intersimone "D Tuesday, 4 December 2012

    Linux and WindowsRT are on the list after we complete some of the mobile work. They are mentioned in the RAD Studio Mobile Roadmap article.

    Doing the mobile work lets us support more platforms and also respond to many developer requests and also give us two things needed to support additional platforms like Linux:

    ARM processor support
    ELF object file format

  • Guest
    someone Tuesday, 11 December 2012

    Linux, please.

    At least since 2000 (Borland times) I ear about Linux support, but today at end of 2012 and nothing...

    Many years ago I had to give up and replace development tools, I shame...

  • Guest
    David Intersimone Tuesday, 11 December 2012

    Someone - Linux Server support is listed on our RAD Studio Mobile Roadmap article at Linux server is listed on slide 5 at

    All of the work being done for Delphi and C++ for next generation ARM compilers, tool chain and for RTL will be reused for Linux to get us there as soon as humanly possible.

    Maybe you and others will come back and join us again.

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: