標籤:
文章有參考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#互調