SWIG - C++同C#的混合编程(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SWIG - C++同C#的混合编程(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2045字,纯文字阅读大概需要3分钟。
内容图文
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* * 功能:演示C++对C#的回调 * 最后更新日期:2014-04-19 * 作者: Kagula * 测试环境:Windows8.1 64bits, Visual Studio 2013 Update1, SWIG Win 3.0.0 * */ namespace SWIG_Tutorial3_CSharp { class Program { static void Main(string[] args) { //测试C++对C#代码的回调 Caller myCaller = new Caller(); // Test pure C++ class using (Base myBase = new Base()) { makeCalls(myCaller, myBase);//C++控制台输出 } // Test director / C# derived class using (Base myBase = new CSharpDerived()) { makeCalls(myCaller, myBase);//C#控制台输出 } //按任意键,退出应用程序 Console.ReadKey(); } /* 设置回调对象,并回调 */ static void makeCalls(Caller myCaller, Base myBase) { myCaller.set(myBase); myCaller.UIntMethodCall(123); } } /* 测试对C++继承类的回调 */ public class CSharpDerived : Base { public override uint UIntMethod(uint x) { Console.WriteLine("CSharpDerived - UIntMethod({0})", x); return x; } } }
SWIG_Tutorial3.i文件清单
<pre name="code" class="plain">%module(directors="1") SWIG_Tutorial3 /* directors的设置是为了使SWIG支持回调 */ %{ /* 指定在当前文本中要引用到的头文件 */ #include "Caller.h" %} %feature("director") Base; /* 设置Base, C++回调C#用的基类 */ /* 解析头文件 */ %include "Caller.h"
Caller.h
<pre name="code" class="cpp">#pragma once /* 功能:演示C++对C#的回调机制 作者:Kagula 测试环境:Windows 8.1 64bits, Visual Studio 203 Update1, SWIG Win3.0.0 参考资料:http://www.swig.org/Doc3.0/CSharp.html#CSharp_directors_example */ class Base { public: virtual unsigned int UIntMethod(unsigned int x); }; class Caller { public: Caller() : m_base(nullptr) {} /* 不要释放从C#传进来的指针,这里遵循谁分配谁释放原则 */ void set(Base *b) { m_base = b; } /* 回调测试 */ unsigned int UIntMethodCall(unsigned int x) { if (m_base == nullptr) return -1; return m_base->UIntMethod(x);//callback } private: Base *m_base; };
Caller.cpp
#include "Caller.h" #include <iostream> unsigned int Base::UIntMethod(unsigned int x) { std::cout << "Base - UIntMethod(" << x << ")" << std::endl; return x; }
原文:http://blog.csdn.net/lee353086/article/details/41682431
内容总结
以上是互联网集市为您收集整理的SWIG - C++同C#的混合编程(二)全部内容,希望文章能够帮你解决SWIG - C++同C#的混合编程(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。