【轉載】cocs2dx中c++與c#互調

來源:互聯網
上載者:User

標籤:

文章有參考http://www.cnblogs.com/zhxilin/archive/2013/03/20/2971331.html

 

下面以接入九幽資料統計外掛程式為例

Step 1:如果是cocos2dx的話,每個版本不一樣,比如3.6的話,已不支援wp8的,原因如下:

   WP8: remove WP8 support because Angle don‘t support WP8 any more

以3.3的版本為例,直接開啟proj.wp8-xaml目錄下的工程檔案;

 

如果不是cocos2dx,那就建立一個directx and xaml 工程。

 

Step 2:

建立 檔案ICallback.h,例如內容可參考如下:

 

/***Code begin***/#pragma once namespace SilverlightDirect3DInterop1Comp{[Windows::Foundation::Metadata::WebHostHidden]public interface class ICallback{public:virtual void Exec(Platform::String ^Command, Platform::String ^Param);int getOfferPoints();void startLevel(int nLevel);void failLevel(int nLevel);void filishLevel(int nLevel);};} /***Code end***/

 

Step 3:在Direct3DInterop.h檔案中加入成員變數和成員函數

public:void SetXmalCallback(ICallback^ callback){ m_globalCallback = callback; }; private:ICallback^ m_globalCallback;

 

Step 4:

建立檔案JiuYouCallback.cs,內容可參考如下:

using System;using System.ComponentModel;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Threading; using JYAnalyticsSdk; namespace SilverlightDirect3DInterop1Comp{    public sealed class JiuYouCallback : ICallback    {        //public MainPage m_mainPage;        static public int s_nOffserPoints;        public void Exec(String Command, String Param)        {            //Execute some C# code, if you call UI stuff you will need to call this too            //Deployment.Current.Dispatcher.BeginInvoke(() => {             // //Lambda code            //}        }         public int getOfferPoints()       {             MessageBox.Show("jiuyou", "jiuyou", MessageBoxButton.OK);                 return 10;       }         public void startLevel(int nLevel)         {             JYAnalytics.TrackEvent("startlevel", Convert.ToString(nLevel));        }         public void failLevel(int nLevel)         {            JYAnalytics.TrackEvent("faillevel", Convert.ToString(nLevel));        }         public void filishLevel(int nLevel)         {            JYAnalytics.TrackEvent("filishlevel", Convert.ToString(nLevel));        }    }}

 

Step 5

在 MainPage.xaml.cs中的找到

private void DrawingSurface_Loaded(object sender, RoutedEventArgs e)

在裡面加入

 JiuYouCallback sCallBack = new JiuYouCallback(); m_d3dInterop.SetXmalCallback(sCallBack);//這句是c#調用c++的方法

 

Step 6

前面5步已經把c++ c#互調的架構搭好了。下面測下是否成功

在Direct3DInterop.cpp檔案裡添加如下

void Direct3DInterop::OnPointerReleased(DrawingSurfaceManipulationHost^ sender, PointerEventArgs^ args){  int nPoints = m_globalCallback->getOfferPoints(); }

 

Step 7,運行程式,記得把弄成如這樣測試

 

 

Step 8

接入九幽統計外掛程式,參考文檔《九幽資料統計外掛程式(WP8)使用說明文檔》

 

Ps:

注意命名空間要一致,否則可運行不起來哦

比如cocos2d的,c#跟c++這邊都有cocos2d

 

原文連結:http://blog.csdn.net/kuovane/article/details/45723645

【轉載】cocs2dx中c++與c#互調

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.