Skip to content

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 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 http://www.youtube.com/watch?v=PwwMpBUoR6Y. You can also download the MP4 video file at http://cc.embarcadero.com/item/29197.  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 - http://blogs.embarcadero.com/davidi/2012/11/21/41993.

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".

{ 8 } Comments

  1. M Marshall | December 3, 2012 at 7:27 pm | Permalink

    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.

  2. E. | December 4, 2012 at 12:07 am | Permalink

    Can BCC64 optimize for a selected processor? Architecture?

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

  3. David Intersimone | December 4, 2012 at 8:04 am | Permalink

    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 - http://docwiki.embarcadero.com/RADStudio/XE3/en/C%2B%2B0x_Features_Index. 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.

  4. David Intersimone | December 4, 2012 at 8:06 am | Permalink

    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 http://edn.embarcadero.com/article/42544

  5. E. | December 5, 2012 at 6:47 am | Permalink

    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?

  6. David Intersimone "D | December 5, 2012 at 6:56 am | Permalink

    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

  7. someone | December 11, 2012 at 12:35 pm | Permalink

    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…

  8. David Intersimone | December 11, 2012 at 12:46 pm | Permalink

    Someone - Linux Server support is listed on our RAD Studio Mobile Roadmap article at http://edn.embarcadero.com/article/42544. Linux server is listed on slide 5 at http://edn.embarcadero.com/article/images/42544/03000005.png

    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.

Post a Comment

Your email is never published nor shared. Required fields are marked *

Bad Behavior has blocked 4 access attempts in the last 7 days.

Close