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++包装为 ...
随机推荐
- Oracle中用户的基本操作
创建用户 1.首先登陆到系统用户sys(sys用户具有创建用户的权限). 2.然后在代码编辑框写入创建用户的代码. 语法:CREATE USER user_name IDENTIFIED BY pas ...
- myEclipse 界面窗口打不开问题
用的myEclipse版本为2014,在其他工作空间没有此问题,在此工作有此问题. 解决办法: 把当前工作空间视图重置即可
- Java提高篇——Java实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- EBS Technology Codelevel Checker (ETCC)
ETCC提供了两个脚本,用来帮助用户检测 E-Business Suite Release 12.2数据库和中间层是否安装了必须的补丁.官方强烈推荐使用. 1.checkDBpatch.sh 这个脚本 ...
- Linux:SSH错误"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! "
hadoop@master:~$ scp /home/hadoop/.ssh/authorized_keys node3:/home/hadoop/.ssh/ @@@@@@@@@@@@@@@@@@@@ ...
- Winform 主窗体更换 构造函数传值
制作登录窗体: 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form ...
- zjuoj 3604 Tunnel Network
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3604 Tunnel Network Time Limit: 2 Secon ...
- Pyhton 学习总结 20 :执行系统命令
在Python中执行系统命令有os.system().os.popen().commands.getstatusoutput().subprocess.Popen等 1.os.system() ...
- C++之路进阶——codevs2933(诗人小G)
2933 诗人小G 2009年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 小G是一个出色的诗人 ...
- PAT乙级 1032. 挖掘机技术哪家强(20)
1032. 挖掘机技术哪家强(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 为了用事实说明挖掘机技术到底 ...