C++: Conformance And Cross-Platform Mobile Development

Download this episode

Download Video

Download captions

Download Captions

Description

The C++ team  has made a goal to achieve  C++11 and C++14 conformance in the Visual C++ compiler for Visual Studio 2015's final release. But there's more: Visual Studio 2015 will actually support another,  modern conformant C++ compiler – Clang for projects targeting non-Microsoft platforms. In this video, Herb Sutter discusses how you'll be able to write a single cross-platform C++ source base and build it to target Windows, Windows Phone, Android, and soon iOS, all from within Visual Studio!

Tag:

C++

Day:

1

Code:

311

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • User profile image
      bilal

      Great . Excellent . Phenomenal .......... Exactly what we require .... No more grade ide's. just visual studio .....love u love C++

    • User profile image
      algesdk

      Algesdk supports this move. Most of our pains will vanish soon !!!!

    • User profile image
      Fernando

      Wow! So excited with these news.
      Well done Microsoft

    • User profile image
      Karl

      Really looking forward to visual studio 15!

    • User profile image
      XTF

      Why no clang for Windows?

    • User profile image
      Seth

      @XTF

      Clang just isn't quite ready for building Windows programs, but it's getting closer:

      http://clang.llvm.org/docs/MSVCCompatibility.html

    • User profile image
      FooBar

      +1000000000 on "C++ IS the MOST portable language", period!

    • User profile image
      tomkirbygre​en

      Great news! :)

    • User profile image
      Tony DaSilva

      Hi Herb. Please help me understand something. In your slide that shows C++ beneath C#/XAML, Objective-C, and Java, how does the interface(s) between C++ and those languages work/look? The same question applies to the boundaries between C++ and the mini-PALS written in those languages. You still need multi-language expertise to use the new model for cross-platform development, no?

      Thanks!

    • User profile image
      vidg

      This is really awesome!

    • User profile image
      Tony DaSilva

      One more question. Why not support GCC and Linux to cover 100% of platforms?

    • User profile image
      admir

      Good news for us!

    • User profile image
      JavaCsharp​Cpp

      Visual C++ for Windows, Android, IOS!
      Great!I can't belive it. Great Microsoft!


    • User profile image
      ChrisBrown

      ok Microsoft, you're doing it right! just respecting. And I'm gonna adapt all your tech.

    • User profile image
      AngusHewlett

      Now if they'd just support OS X. Still need a Mac to test on, of course, but I prefer a big Windows beast for development and a dual core Macbook for testing.

      LLVM-Clang can compile x86 code against the OS X frameworks, but will the VS version of clang support x86/x64 object code & its linker be capable of producing Mac binaries?

    • User profile image
      Ankit MSFT

      @Angus. Thanks for the feedback. If we go the route of supporting iOS. One choice would be to make use of XCodeTools themselves to build mac binaries. Hope that helps.

    • User profile image
      Gregor Brandt

      Embarcadero already has a CLANG based C++ compiler for 64 bit Windows. Check it out!

      (also supports OS X, Android and IOS)

    • User profile image
      Exim

      Herb, there are many apps where %95+ of code is pure UI. It would be great if you address these kind of apps as well... So 100% cross-platform projects (with some trade-offs) would be great!

      You can adopt MoSync!

    • User profile image
      Anton

      I'd like to suggest CppCode. It's the first and the only offline C/C++ IDE & Compiler on iOS!
      No jailbreak required, no internet connection required, no ads, free(mium) app.

      App feature list, screenshots and video on Vimeo/Youtube and even quick start at http://cppcode.info

    • User profile image
      JeanMichel

      Very interesting! What would be the difference between the new C++ compiler and a cross-platform development like Xamarin? Pros and Cons? Thank you,

    • User profile image
      GaiChewKai

      ....but there is nothing similar to Embarcadero C++Builder XE7 RAD development, I wondered how long will Microsoft Visual Studio take to make it a complete RAD cross platform development tool ?

      So far, I can understand VC++2015 merely for building cross platform shared libraries but how about building native application (non-scripting language) with RAD approach eg. Form with components like Button, Textbox, Listbox ...etc ?

      I like Visual Studio IDE working environment, if VS 2015 can create something like Embarcadero C++Builder RAD tools for MacOS, iOS, Linux and Android, that is 101% perfect.

    • User profile image
      DavidLong12

      My internet is slow but still it is great to see a such a great speaker!! best is his explanation!

    • User profile image
      longnightmo​on

      Hi Herb,

      Would you please post the two links that we should watch.

      Thank You,

               Chris

    • User profile image
      Charles
    • User profile image
      Gary Harper

      This really isn't anything new or all that exciting. It's just reducing the number of development platforms required to write code. People have been putting Windows/Mac/etc wrappers around generic C++ code for decades. Creating an ISO compliant C++ compiler isn't really a modern marvel, it's just doing what is right.

      This doesn't solve the problem that exists where there is no common user interface toolkit that works across platforms. In my case, my application's user interface is quite complex and is where I spend 90% of my time. The standard non-UI code isn't much of a chore. So, what I REALLY want is a common way to write the UI code once and be done with it. Although I am not that big of a fan of Qt, it is more in line with what I want in Visual C++, which is a way to write VISUAL applications in C++ and have them work wherever I want.

      From what I can tell here, Microsoft is pushing NON-VISUAL C++ and then .NET or something else for the VISUAL part. That isn't what I want.

    • User profile image
      GaiChewKai

      Gary Harper, you may try Embarcadero C++Builder XE7, is very easy fo write cross platform UI.

    • User profile image
      GaiChewKai

      I am bit confused, any different between the VS2015 Xamarin mobile development and the official Xamarin commercial development tool ?

      Please advise.

       

    • User profile image
      Stanwix​Global

      Who knew that investing my time in C++ in 1992 would pay off in 2015:) Great insight and developments.

    • User profile image
      three6t

      Taking a much wider perspective while Msft support for iOS still experimental and there is no DX on OSX, Here's how we are moving towards a NonCross Platform approach,

      PPT:: Putting Cross-Platform on the CROSS 

      http://1drv.ms/17baAeX

    • User profile image
      HormyAJP

      Very interesting and exciting stuff!

      I'd like to understand more about the bindings to the platform specific layers and what exactly the C++ environment will offer.  My question is probably best explained using an example. 

      Suppose I wish to create a cross-platform application that utilises an accelerometer input device when available.  If I wish to access this on iOS then, if I was working directly in Xcode, I would just access the appropriate ObjC API directly in my C++ code.  On Android the issue would be slightly more complex as I'd need to access the functionality via the JNI.  On desktop platforms I'd need to detect the platform and alter my code path to account for the lack of accelerometer.

      In this example, how do I write generic code here?  Does this environment add generic APIs for this sort of thing?  Does it automatically provide mechanisms to give me access to ObjC, Java (etc.) and if so how does work with maintaining platform independent code?  How are these components managed, e.g. how will I deploy my generic code along with the necessary infrastructure to support the bindings.  More generally, how would platform specific deployment work at all?  Is that part of the package?  Finally, debugging.  Can I simultaneously debug the generic C++ layer built with MSVC/Clang and also debug the platform specific layers?

      Thanks

       

    • User profile image
      robwirving

      @Tony DaSilva: Hey Tony, there are methods to interop between C++ and all the platform specific languages you mentioned. The pattern Herb is presenting is to minimize the interop code to the UI Layer and Platform Abstraction Layers so that you can maximize the share C++ logic that can then communicate to the UI or MiniPALs in a platform agnostic fashion.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to send us feedback you can Contact Us.