Android 平台C# 与C++之间的互相调用方法

本文介绍了在Android平台上C#与C++如何进行互相调用,重点解决C++回调C#的问题。通过示例代码展示在Linux环境下,利用Mono库实现C#调用C++并实现C++回调C#的功能。Linux下编译运行成功,但Windows平台未测试。
摘要由CSDN通过智能技术生成

  Java与C++的互相调用很容易做到,有好几种方式实现,如 JNI , JNA 方式 ,而C# 与C++之间的相互调用就有点麻烦了,一般情况下是C#调用C++ ,C++却无法调用C#  。本人就是为了解决C++ 调用C#的问题,也就是可以实现C#调用C++,然后C++再回调C# 。本人搜索了大量的网络文章,却没有找到有效方法,偶然间在Steamwork.Net的源码里发现了 可行的方法,并经项目实际使用验证可行 。

具体实现例子请看下面的代码

 C#端,回调实现:

using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace IPInvoke
{
	public class CallbackInvoke
	{
		 static CallbackInvoke ()
		{
		}

		internal const string NativeLibraryName = "NativeTest";

		[DllImport(NativeLibraryName, EntryPoint = "RegisterCallback")]
		public static extern void  RegCallback(IntPtr cbPtr);

		[DllImport(NativeLibraryName, EntryPoint = "UnregisterCallback")]
		public static extern void  UnregisterCallback();

		[DllImport(NativeLibraryName, EntryPoint = "GetUser")]
		public static extern void GetUser(int uid);

		[DllImport(NativeLibraryName, EntryPoint = "RequestGameInfo")]
		public static extern void RequestGameInfo (int gameId);


		private static Dictionary<Type,IDisposable> mDisposes = new Dictionary<Type,IDisposable>();

		public delegate void DispatchDelegate<T>(T param);
		public static void RegisterCallback<T>(DispatchDelegate<T>  callback){

			Type t = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值