swig之于c++
[namespace]
namespace nsTest1
{
int nsAdd(int a, int b)
{
return a + b;
}
} namespace nsTest2
{
int nsAdd(int a, int b)
{
return a + b;
}
}
有如上代码ns.h, 如果直接用swig导出, 则会报命名冲突的错误。需要用rename进行特殊处理, 如下:
//防止命名冲突错误。
%rename(nsAdd2) nsTest2::nsAdd;
%include "ns.h";
[宏]
[typedef]
有头文件typedef_.h
typedef float hkFloat32; typedef hkFloat32 hkReal;
如果在swig的导出接口中用到如上定义, 如:
inline hkReal _myAdd(hkReal a, hkReal b)
{
return a + b;
}
则swig无法识别hkReal。可用如下的办法解决:
//用于告诉swig hkReal的定义
// %inline
// %{
// typedef float hkFloat32;
//
// typedef hkFloat32 hkReal;
// %}
//直接包含头文件也能达到同样的效果。
%include "typedef_.h"
[template]
template<typename T>
T testAdd(const T &a, const T &b)
{
return a + b;
}
用如下办法导出需要导出的类型:
%template(testAdd_int) testAdd<int>;
%template(testAdd_float) testAdd<float>;
[overload]
要看脚本语言是否支持重载, 如果不支持, swig只会导出第一个接口, 其他的重载接口会被忽略。
[默认参数]
[copy constructor]
因为as3本身是没有拷贝构造函数的概念, 而swig会把c++的copy constructor生成一个对应function wrapper, 但是没有名称, 所以之后编译.as文件会报错。解决方法:
直接在.i文件中ignore掉copy constructor.
[operator]
官方文档上说swig对待操作符重载, 就如同对待一个普通函数, 但是导出的接口类似于operator +, 这种形式在大部分的脚本语言中都是非法的函数命名, 所以为了解决这个问题, 依然可以用%rename进行解决。
swig之于c++的更多相关文章
- Node.js-视图引擎【1】-Swig集成express的安装与配置
node.js视图引擎,选来选去发现Swig最符合我的胃口哈哈. 一.安装Swig视图引擎 npm install -g swig 二.在node.js代码中配置如下 var app = requir ...
- express+gulp构建项目(五)swig模板
这里的文件负责配置swig模板引擎. index.js var jsonHash = require('./json_file'); var staticTag = require("./t ...
- Python、Ruby中的SWIG使用案例
案例一:Python通过SWIG使用C码 linux系统 照着文档[1]做就是了~! 案例二:Python程序调用张华平博士最新发布的中文分词库“NLPIR – ICTCLAS2013”为例~! wi ...
- 安装m2crypto报错swig error : Unrecognized option -builtin
M2Crypto 是最完整的为 Python 包装 OpenSSL 的 RSA,DSA,DH,EC,HMACs,消息摘要,对称密码算法(包括AES)的一个库工具.而自从 M2Crypto 升级到版本 ...
- crossplatform---Nodejs in Visual Studio Code 05.Swig+Bootstrap
1. 开始 准备好Express+Swig的练习代码:https://github.com/Mengkzhaoyun/nodepractise 准备好AdminLTE后台管理模版:https://ww ...
- Swig 使用指南
如何使用 API swig.init({ allowErrors: false, autoescape: true, cache: true, encoding: 'utf8', filters: { ...
- Demo Swig
演示使用swig工具创建c语言的java接口,生成.so库和java接口文件. 在此之前先要安装swig,安装方法:sudo apt-get install swig 1.使用eclipse创建工程. ...
- html 模板 swig 预编译插件 grunt-swig-precompile
GitHub grunt-swig-precompile NPM grunt-swig-precompile 在书写前端静态页面的时候,每个页面总在书写很多重复的标签. 为了提高效率,结合 swig. ...
- 在Python中调用C++,使用SWIG
http://www.coder4.com/archives/2141 SWIG:Simplified Wrapper and Interface Generator,顾名思义,就是将C/C++包装为 ...
随机推荐
- [PCL]ApproximateVoxelGrid
点云滤波继承自Filter模板类 注意Filter类的filter 方法调用了虚方法applyFilter: inline void filter (PointCloud &output) { ...
- vertical-align属性
准备阶段 vertical-align取值及含义: 值 含义 baseline 默认.元素放置在父元素的基线上. top 把元素的顶端与行中最高元素的顶端对齐 text-top 把元素的顶端与父元素字 ...
- xib自定义cell代码规范
// // MJTgCell.m // 01-团购 // // Created by apple on 14-4-1. // Copyright (c) 2014年 itcast. All r ...
- js作用域学习
代码解析至少分两步 1):查找var,function参数例如下面这个例子 a= 未定义 fn1={alert(2)}函数的话,是整个整体 2):逐行读代码:类似=+-%*等都是表达式,表达式可以改变 ...
- web前端编写注意点
1.在语义不明显,既可以用 <P> 也可以用 <div> 的地方,尽量用 <P> ,因为 <P> 默认情况下有上下间隔,去样式后的可读性更好,对兼容特殊 ...
- PL301 matrix内部模块
ASIB中的valid信号,有两部分,一部分add产生的地址映射,到main中的default addr.(vect) 一部分由Dmu和Cdas组成,到main中的build. Dmu:interco ...
- [已解决] windows 下 git 免输密码
在 .git/config 里面加上这句话即 [credential] helper = store 原文地址:http://www.cnblogs.com/gifisan/p/5829578.htm ...
- centos7忘记root密码修改方式
1.在进入系统选择时按下e键
- Android中插件开发篇之----动态加载Activity(免安装运行程序)
一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析 ...
- filebeat 多行日志的处理
配置文件位于/etc/filebeat/filebeat.yml,就是filebeat的主配置文件 打开文件,搜索multiline:,默认是注释的,常用的有如下三个配置: multiline: pa ...