SWIG学习入门(一)
来源:互联网 发布:linux top 所有进程 编辑:程序博客网 时间:2024/05/22 12:15
介绍
在我们实现底层接口过程中,常常为了跨平台性和性能,所以用C++去实现接口,并提供给上层的不同语言去调用,对于封装C++类库,当然有很多技术,比如我之前介绍的托管C++,但托管C++需要的工作量巨大,所以就有了这个技术SWIG,它能够将C++的接口提供给多种语言调用,包括C# Ruby python java等。
入门
环境:win10 VS2015
下载:官方路径 我的路径(3.0.12版本)
首先创建win32控制台项目 选择类库项目 勾选空项目
为项目添加 .h和 .cpp文件代码如下:
#pragma oncenamespace cpluscplus{ class PlusPlusClass { public: int Add(int a, int b); };}
#include "PlusPlusClass.h"namespace cpluscplus{ int PlusPlusClass::Add(int a, int b) { return a + b; }}
添加SWIG文件 SWIG_TEST.i:
%module SWIG_Tutorial1 %{ /* 在包装代码中包含头文件 */ #include "PlusPlusClass.h" %} /* 解析头文件生成包装代码 */ %include "PlusPlusClass.h
打开 .i文件属性,选择常规->项类型->自定义生成工具
然后选择自定义生成工具->常规->行命令
输入:
E:\DevEnv\swigwin-3.0.12\swig.exe -c++ -csharp -outdir “$(SolutionDir)interface” “%(FullPath)”
其中E:\DevEnv\swigwin-3.0.12\swig.exe为你的swig所在目录,同时要在解决方案目录下新建interface文件夹。
在输出中输入:%(Filename)_wrap.cxx;%(Outputs)
然后直接生成项目,查看项目文件夹可以看到生成了一个文件
将该文件添加到项目中,再次生成项目,可以看到interface文件夹中已经生成C#文件:
这里就算完成了。
下面我们进行测试:
在解决方案中添加C#控制台项目:
并将interface中的文件添加进来,同时编写main函数:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SWIG_Tutorial1_CSharp{ class Program { static void Main(string[] args) { PlusPlusClass fromCPlusPlus = new PlusPlusClass(); Console.WriteLine("来自C++的调用结果:" + fromCPlusPlus.Add(123, 1000)); Console.ReadKey(); } }}
测试结果:
0 0
- SWIG学习入门(一)
- SWIG 学习笔记(一)
- swig扩展php(一)
- swig入门
- swig入门
- 开发人员 SWIG 快速入门
- swig基本入门
- SWIG学习总结(翻译,自己理解为辅)
- SWIG学习总结(翻译,自己理解为辅)
- JAVA入门学习(一)
- XML入门学习(一)
- OpenGL入门学习(一)
- OpenGL入门学习(一)
- OpenGL入门学习(一)
- Jquery 入门学习(一)
- OpenGL入门学习(一)
- membership入门学习(一)
- YUI3学习(一)---入门
- Java获取IP地址的多种方法
- 解决Ubuntu和Windows的文件乱码问题
- cs231n的第一次作业2层神经网络
- Android Service使用详解
- mysql编码设置为utf8
- SWIG学习入门(一)
- c语言去除字符串空格(面试题)
- Use The Terminal Download The JDK
- 官网上下载可安装版的MySQL数据库
- PHP二维数组order by排序的实现
- 大数据分析与处理
- xshell/putty 连接 linux 虚拟机 connection failed 的解决方案
- redis--主从复制
- D. Artsem and Saunders