SWIG
文章平均质量分 96
介绍swig的一些概念和与C#互调用的实践
JimCarter
与专业人员为伍,guyiming2011@126.com
展开
-
SWIG包装器使用指南——(四)(完)C#使用SWIG简介与实践
SWIG如何实现让C#方便的调用C++函数的?其实原理并不负责,仍然使用C#的互操作技术P/Invoke实现,只不过SWIG对C++代码进行的包装,使开发者更易于调用。-dllimport:指定P/Invoke时要调用的dll名称-namespace:设置C#的命名空间-outfile:将所有生成的C#代码放到一个cs文件中理解一切皆是指针避免在里写业务逻辑注意SWIG指令顺序(大多%xxx在前,%include在后)关注内存回收的节点,避免被过早GC。原创 2023-04-01 20:39:14 · 1590 阅读 · 1 评论 -
SWIG包装器使用指南——(三)Typemap 类型映射
Typemap时一种可以让你控制SWIG底层生成逻辑的高级自定义特性。SWIG的使用者一般都绕不开它。public :但是Foo*&却被包装为了这种我们无法直接使用的类型:Typemap的出现就是为了解决这种实际类型与期望类型不一致的问题。使用%typemap指令来定义Typemap。method:表示类型映射的方法,有in,out,csin,csout等等,不同的方法具有不同的功能。typelist:表示匹配模式,如int,int分别表示要映射int与int类型。原创 2023-04-01 20:40:44 · 1119 阅读 · 0 评论 -
SWIG包装器使用指南——(二)C++代码的包装
就变成了一个野指针,其指向的内存其实已被释放。所以SWIG自带的内存管理机制过于简单有一定的不足,不一定是我们调用时所期待的结果。SWIG支持C++的引用类型,正如完美支持指针类型一样。SWIG支持C++的命名空间,但是默认会忽略。这里通过分析生成的C#代理类的方式来理解,C++与C#互操作时的内存管理。方法,这两个分别对应的是原C++代码里的同名成员。来说,SWIG知道我们不会更改其值,所以可以将其直接映射为c#的。函数模板与类模板的使用方法一致,不做赘述。方法,用来回收分配的C++内存。原创 2023-04-01 20:37:21 · 1116 阅读 · 0 评论 -
SWIG包装器使用指南——(一)基本概念
SWIG 版本:4.1.1官方文档:https://www.swig.org/doc.html是一个exe小工具主要用来包装已有的 C/C++ 代码、生成目标语言(C#、Lua、Python等)代码(本系列文章将以C#如何调用C++函数为例.i文件是SWIG规则描述文件,这个文件需要我们自己手动编写。SWIG 会解析这个文件来生成对应的包装代码。此文件的文件名与文件后缀无特殊要求,可随意更改。%module开头,必须有但意义不大,就是个名字而已。需要include的头文件:用%{ %}原创 2023-04-01 20:38:46 · 1127 阅读 · 0 评论