I'm going to write an application for iOS, Mac OS X and Windows Phone 7.
To minimize the amount of work, I'd like to write the model only once, in C++ (otherwise I'd have to do it twice; in Objective-C and in C#).
Can I use C++ in a Windows Phone 7 application, together with C#?
No you cannot use C++ for WP7 apps. However you might be able to use Monotouch to write some shared code in C# between the 2 platforms.
Taken from here: Windows Mobile 7 and C++
All Windows Mobile 7 (now called Windows Phone 7 ) development, at
least initially, will be in managed code. Development using native
languages like C/C++ is not supported for third parties. You can
develop apps and games for Windows Phone 7 using the Silverlight or
XNA framework, and the initial release supports only C#, VB support is
supposed to be coming out soon.
It's from June 2010.
Related
Since the VideoLAN programmers do write Windows 8/RT/Phone apps using Linux based operating systems and GCC I was wondering, whether there is some progress in regard to how to program for Windows in a Linux environment, where Windows is used only for testing. How easy/ hard is it, to program a Windows RT (modern UI whatever)/ Windows Phone 8 application on Linux?
I imagine a situation, where you use tools such as Git, Emacs/ VIM, GCC, Mono etc. to do the job. How about submitting the app without Visual Studio?
I ask, because Microsoft open-sourced so much stuff now, using Linux based OS for development could (should?) become feasible while developing apps for their systems. Does anybody have some behind the scenes information on this? It is very hard to find some relevant info.
Note I edited this question to be more "straight to the point"
Links:
This is the VLC Kickstarter page: https://www.kickstarter.com/projects/1061646928/vlc-for-the-new-windows-8-user-experience-metro
I'm a software engineer at Microsoft so I think I could give you some insights on this.
From a testing perspective, you should definitely have a Windows machine to test against. You can install Windows 8 as a VM using Virtual Box or something similar. You could also remote into a Windows machine if you have access to one.
Visual Studio can't be installed in Linux, as you know, but there are other C#/ASP.NET/etc. IDE's that you can use natively on Linux. Look into Wine for Linux: http://www.winehq.org/about/. It may help you somewhat.
As an aside, developing applications for Windows will be getting easier in the coming months. As was announce at MS Build, Microsoft is moving towards a universal app store that will make your app run on all Windows devices: PC, tablet, phone, and Xbox. This doesn't help with developing apps on Linux, but if you're a Windows developer, you might want to keep your eyes open about the new universal-style apps.
I have experimented with XAML UI programming using C++ for Windows 8 Store apps. I really like the developer experience, the XAML designer and the fact that I can get pure native apps with a modern rich user interface and high performance.
I want to create similar XAML apps using C++ for Desktop Windows (the non-Store world). How do I do this? For years I have waited for a native UI stack for Windows Desktop which is newer than MFC and somewhat higher level than direct Win32/GDI programming.
Both Silverlight and WPF use XAML along with code-behind to implement apps. Neither are still maintained but if you want to play with the same technology, it's there.
As Jeff McClintock mentioned, Microsoft has announced that a future update to Windows 8 will allow apps to run on the desktop, but I expect that this will merely be a windowing change and the apps will still run in the restricted sandbox that Store Apps run within. Maybe Microsoft will introduce yet another desktop-based UI framework and support it for three years before killing it.
WTL is newer than MFC, although its last update was six years ago. I personally recommend Qt, as it allows access to native Win32 calls (so you can do whatever ganky stuff Win32 apps normally want to do) while still having a rich, robust UI framework to build upon.
A future update to Windows 8.1 will allow Windows 8 Store Apps to run in a Window on the Desktop, and appear on the taskbar like a Win32 Application. This allows Store apps to Act a lot like Desktop Apps. MS have hinted store-app XMAL will be available to Desktop apps at some point in future.
http://www.gottabemobile.com/2014/04/02/microsoft-listens-to-users-start-menu-and-windowed-apps-are-on-the-way/
Codejock has some markup language support in MFC (native C++).
http://www.codejock.com/inc/img/downloads/samples/toolkitpro_markupsample_full.png
What I am looking at is C++/WinRT for native C++ applications that use the WinRT framework for UWP apps, at least for Windows 10. See C++/WinRT in the Microsoft Dev Center for a starting place.
C++/WinRT is an entirely standard modern C++17 language projection for
Windows Runtime (WinRT) APIs, implemented as a header-file-based
library, and designed to provide you with first-class access to the
modern Windows API. With C++/WinRT, you can author and consume Windows
Runtime APIs using any standards-compliant C++17 compiler. The Windows
SDK includes C++/WinRT; it was introduced in version 10.0.17134.0
(Windows 10, version 1803).
The intro article in the series goes on to say:
For authoring and consuming Windows Runtime APIs using C++, there is
C++/WinRT. This is Microsoft's recommended replacement for the Windows
Runtime C++ Template Library (WRL) and C++/CX.
I first got started with UWP apps for Windows 10 using C++/CX which uses the Microsoft Visual Studio C++ extensions with ref and all of the C# like extensions for C++ in a .NET world.
I am now working with Visual Studio 2017 and the C++/WinRT framework which uses native C++17 features along with an SDK. I believe you can also use C++/WinRT with Visual Studio 2015 with the latest updates, update 3.
There is also a package available from Extensions and Updates within Visual Studio, C++/WinRT, which contains a couple of Visual Studio templates for a couple of different application types.
C++/WinRT seems to be a work in progress. It seems best if you are using Visual Studio 2017 with the latest Windows 10, Version 1803, which contains the SDK and the XAML editor works fine. I have had problems with the XAML editor with an earlier build of Windows 10 Enterprise at work (IT Services maintains its own update servers and is a couple of builds behind the bleeding edge).
See also my question synchronizing SDK with Windows 10 update and using WinRT with Standard C++ which has an updated version of a test program from this article, C++ - Introducing C++/WinRT.
I'm kinda new to WP8 development and I have to reuse huge legacy codebase (C++, ATL, WIN32).
Is there ATL support for Windows Phone 8? Or what?
C++ and some of Win32 is supported on Windows Phone 8. Some COM functions are supported (as WinRT is using COM under the hood), but there's no ATL support that I'm aware of. There are also some WinRT functions available in C++ you can use.
You'll probably have to use a C# XAML UI layer (or C++ DirectX if you want), with a WinRT bridge layer to your C++ code, which will need to be compiled against the Windows Phone 8 headers and libraries.
See MSDN Windows Phone 8 API reference for more details.
This question already exists:
Closed 10 years ago.
Possible Duplicate:
iPhone development on Windows
Xcode 4 only works on Mac and I am getting project requests for iOS and I need to develop iOS applications without uying a Mac. I have a Windows PC. Is there an IDE which works well with iOS SDK or is developing C++ code which uses iOS SDK libraries the only choice?
If you are familiar with C#, consider monotouch. You will need a mac to register the app in any case.
One newer solution which is open source is called MonoCross.
Here's a link to their site, and here's the Google code site.
From their site:
Monocross is an open source cross-platform mobile framework using C#
.NET and the Mono framework. Monocross lets you create beautiful
applications on iPads, iPhones, Android devices, Windows Phone 7, and
Webkit enabled phones.
It uses C#. No C++ required.
Edit: MonoCross uses MonoTouch.
In your situation, if you have no Mac around, it will be better and easier to use VirtualBox (or VMware) and install MacOS there. And to develop inside the VB.
I know that the recommended language for Windows Phone 7 development is C#.
However, for various reasons, I very much prefer continuing to program in standard C++, if possible.
Is it possible to program for Windows Phone 7 in standard C++ only?
If the answer is yes, what tools and resources do I need to accomplish that?
EDIT, finally: for WP7 it won't ever be, but for Windows Phone 8 - yes you can. Native apps, C/C++, iOS/Android portability and code sharing, DirectX. You'll need Visual Studio 2012 and Windows 8 for WP8 development, though. VS2010 is not getting the requisite SDK. To run the emulator, you'll need a 64-bit physical Windows 8 box with a SLAT-enabled CPU. You can still develop on a virtual machine, but you'd need a device to run apps, the emulator won't start.
The nongame UI, however, will still be XAML-based and managed. The entirety of Win32 API will not be supported. They're pushing a model with managed UI layer and a native middleware beneath it. Purely native development is still not an option; although one might try with WinMD classes as code-behind for XAML. The visual XAML designer will probably choke, and you'll need a dummy managed DLL anyway.
EDIT: even assembly, as long as it's targeting Thumb-2 and the mnemonics are UAL-style. For running on the simulator, you'd have to produce an alternative set of assembly files (or other sources) targeting Intel.
For the sake of posterity, here's the pre-06/20/2012 answer:
If you work for Microsoft or an OEM, then yes. Otherwise, no (for now).
There's hope though. Google did relent and issued their NDK after a while; Microsoft might, too. The native code capability is already there. Once they come up with a sensible sandboxing solution, why not.
Also, there's already some pressure from big-name software vendors to open up native development. Mozilla people stated outright that there will be no Firefox on WP7 unless it's native. Similar rumors about Flash.
EDIT: if you want a native SDK on WP7, like I do, please go sign the petition here and/or the one over there. Thank you!
EDIT2: see this. It's a leak and therefore not official, but still, I say there's some hope.
EDIT3: also this. Still not official, but this rumor moves the timeframe for native app support even closer - to the upcoming Tango release.
EDIT4: Microsoft seems to be pretty keen to promote WinRT, their new tablet-oriented XAML-based app platform, which allows for (among other things) unmanaged C++. Now, on every other major mobile OS the tablet and the phone app stacks are one and the same. Just sayin'.
EDIT5: there's been some proof-of-concept work along the lines of C++ => LLVM => MSIL and C++ => LLVM => C#, but nothing production-quality so far.
Phone manufacturers such as Samsung can deploy applications written in unmanaged code, but all other developers can not.
No that is not possible. Microsoft has made a decision to only allow application developers to use managed code on the Windows Phone 7 devices.
According to Wikipedia Windows Phone 7.0 runs Windows CE 6.0 R3/7.0 hybrid as operating system.
In theory one could use C++ to build standard* C++ programs targeting Windows CE 6.0 R3 and 7.0 (supposed to come out on Q1 2011). I mean all the standard* dlls should be there (gdi32.dll, user32.dll) Internet Explorer and other C++ programs are still running on Windows Phone 7.
The how to get the application on the phone? and how to run the application on the phone? are the next questions which at the moment I don't know how to answer.
This interview tells something about it: Writing the WP7 App Platform in C# and C++ I haven't watched it yet, so you might add respective comments :)
Windows Phone 7 supports Silverlight and XNA.
All programs for Windows Phone 7 are written in .NET managed code. It is also possible to write Windows Phone 7 applications in Visual Basic .NET.
Visual Studio 2010 Express for Windows Phone includes XNA Game Studio 4.0 and an on-screen phone emulator, and also integrates with Visual Studio 2010. You can develop visuals and animations for Silverlight applications using Microsoft Expression Blend.
The Silverlight and XNA platforms for Windows Phone 7 share some libraries, and you can use some XNA libraries in a Silverlight program and vice versa.
But you can’t create a program that mixes visuals from both platforms. Maybe that will be possible in the future, but not now.
EDIT:
to be more clear..there is no native C++ support you'll have to use either Silverlight or XNA,both are based on .net framework.