swim如何记忆,swim巧妙记忆
在实现底层接口的过程中,为了跨平台和性能,我们经常使用C来实现接口,并提供给上层的不同语言来调用。封装C类库的技术当然有很多,比如我之前介绍的托管C,但是托管C需要巨大的工作量,所以就有了这个技术SWIG,它可以提供C到很多语言的接口,包括C# Ruby python java等等。
入门环境:win10 VS2015下载:官方路径我的路径(3.0.12版)首先创建win32控制台项目,选择类库项目,勾选空项目。
补充。h和。项目的cpp文件代码如下:
# pragma once namespace cpluscplus { class plus plus class { public:int Add(int a,int b);};} #include PlusPlusClass.h 命名空间cpluscplus { int plus plus class:Add(int a,int b){ return a b;}}添加SWIG文件SWIG_TEST.i:
%module SWIG_Tutorial1 %{ /*在包装代码中包含头文件*/# Include plus class . h % }/*解析头文件以生成包装代码*/% Include plus class . h Open。I文件属性,并选择常规-项目类型-自定义生成工具。
然后选择自定义构建工具-常规-行命令。
输入:
e: DevEnv swig win-3 . 0 . 12 swig . exe-c-cs harp-outdir " $(solution dir)interface " " %(full path)"
e: devenv swig win-3 . 0 . 12 swig.exe是您的swig所在的目录,应该在解决方案目录下创建一个新的接口文件夹。
在输出中输入:%(Filename)_ wrap . cxx;%(产出)
然后直接生成项目。查看项目文件夹,您可以看到生成了一个文件。
将此文件添加到项目中,并再次生成项目。您可以看到C#文件已经在接口文件夹中生成:
即使这个地方完蛋了。
让我们测试一下:将C#控制台项目添加到解决方案中:
并在界面中添加文件,同时编写主函数:
使用系统;使用系统。集合。泛型;使用系统。Linq使用系统。文本;使用系统。线程。任务;命名空间SWIG _ tutorial 1 _ cs harp { class Program { static void Main(string[]args){ PlusPlusClass from cplusplus=new PlusPlusClass();控制台。WriteLine(从C: fromCPlusPlus调用结果。添加(123,1000));控制台。read key();}}}测试结果: