鉴于诺基亚(微软移动这个没人用的手机)开发者比较少,cocos2dx移植方面更是少的问题,总结一下WP8移植方面的资料,希望对大家有用,自己也当作笔记留念。
1、WP8方面有两种方式创建项目,HelloCpp和TestCpp就是这样,XAML方式和纯c++方式。最好选择xaml方式,因为你有可能会c++和c#进行交互。废话不说,有图有真相。
2、说到c++和c#交互,其实叫C++/CX(C++/CX其实是微软在Win8开发平台下,对C++语言的一种扩展),下面就讲述其用法,概念可以去百度。
a) c++调用c#,比如我想获得该诺基亚的UniqueID,直接上代码吧,了解c#委托的童鞋应该不难理解,if...baidu...
**************************************************************************** //WP8DataManager.h #ifndef __WP8DataManager_H__ #define __WP8DataManager_H__ namespace PhoneDirect3DXamlAppComponent { public delegate Platform::String^ GetUniqueIDDelegate(); public ref class WP8DataManager sealed { public: WP8DataManager(void) { } ///DeviceInfo //此方法将在c#中调用 void SetGetUniqueIDDelegate(GetUniqueIDDelegate^ del) { m_getUniqueIDDelegate = del; } //获得的id,c++直接调用 Platform::String^ GetUniqueID() { if(m_getUniqueIDDelegate) { return m_getUniqueIDDelegate->Invoke(); } return ""; } ///DeviceInfo end private: property static GetUniqueIDDelegate^ m_getUniqueIDDelegate; }; } #endif // __WP8DataManager_H__ **************************************************************************** //MainPage.xaml.cs namespace PhoneDirect3DXamlAppInterop { public partial class MainPage : PhoneApplicationPage { // other demo... //datamanager private WP8DataManager m_dataManager = null; private void DrawingSurface_Loaded(object sender, RoutedEventArgs e) { if (m_d3dInterop == null) { //demo ...... } if (m_dataManager == null) { m_dataManager = new WP8DataManager(); m_dataManager.SetGetUniqueIDDelegate(getUniqueID); } } public String getUniqueID() { /*try { byte[] uniqueIDbytes = (byte[])DeviceExtendedProperties.GetValue("DeviceUniqueId"); string uniqueID = System.Convert.ToBase64String(uniqueIDbytes); }catch(Exception ex){ MessageBox.Show(ex.Message, "Failed", MessageBoxButton.OK); }*/ return "abc"; } } } **************************************************************************** //your cpp demo PhoneDirect3DXamlAppComponent::WP8DataManager^ manager = ref new PhoneDirect3DXamlAppComponent::WP8DataManager(); Platform::String^ id = manager->GetUniqueID(); ****************************************************************************