Ruby使用C++扩展实例(含C++扩展代码示例)
早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。
require 'mkmf'
$libs = '-lstdc++'
create_makefile 'foo'
#include <ruby.h>
VALUE plus(VALUE self, VALUE va, VALUE vb)
{
int a = NUM2INT(va);
int b = NUM2INT(vb);
return INT2NUM(a+b);
}
extern "C" void Init_foo()
{
VALUE foo = rb_define_module("Foo");
rb_define_module_function(foo, "plus", RUBY_METHOD_FUNC(plus), 2);
}
$ ruby extconf.rb
$ make
# 如果要安装至site-ruby
$ make site-install
require 'foo.so'
puts Foo.plus(3,4)
$ ruby test.rb
7
相关推荐
-
jQuery EasyUI API 中文帮助文档和扩展实例
下载地址:jQuery EasyUI API 中文帮助文档 1.validatebox验证和提示框扩展: //弹框 $.extend({ show_alert: function (strTitle, strMsg) { $.messager.alert(strTitle, strMsg); } }); //扩展validatebox,添加验证 $.extend($.fn.validatebox.defaults.rules, { eqPwd: { validator: function (va
-
es6 字符串String的扩展(实例讲解)
新特性:模板字符串 传统字符串 let name = "Jacky"; let occupation = "doctor"; //传统字符串拼接 let str = "He is "+ name +",he is a "+ occupation; es6简洁的字符串拼接 let name = "Jacky"; let occupation = "doctor"; //模板字符串拼接 le
-
ES6字符串的扩展实例
本节我们来学习 ES6 中字符串类型的扩展,包括一些字符串对象的新增方法的使用等. 字符的 Unicode 表示法 ES6 加强了对 Unicode 的支持,JavaScript 中可以采用 \\uxxx 形式表示一个字符,其中 xxxx 表示字符的码点.例如: console.log("\u0075"); // u 但是这种表示法只限于码点在 \\u0000~\\uFFFF 之间的字符.超出这个范围的字符,必须用两个双字节的形式表示. console.log("\uD842
-
ECMAScript 6数组的扩展实例详解
目录 扩展运算符 Array.from() Array.of() 数组实例的 copyWithin() 数组实例的 find() 和 findIndex() 数组实例的 fill() 数组实例的 includes() 扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4
-
ECMAScript 6数值扩展实例详解
目录 一.数值的扩展 Number.isFinite(), Number.isNaN() Number.parseInt(), Number.parseFloat() Number.isInteger() 一.数值的扩展 Number.isFinite(), Number.isNaN() ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法. Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infin
-
element plus的样式修改和扩展实例
目录 一.用户故事 二.需求分析 三.需求实现 一.用户故事 我们开发了一个业务组件库.业务组件库是需要基于公司内部的一个UI组件库.而公司的UI组件库又出“基于”element ui的. 公司的UI组件库是对element ui的主题色进行了修改,并且也对于一些组件进行了扩展.可惜的是,由于他们的版本是vu2版本.我们的业务组件库是vue3的element plus的版本. 二.需求分析 实现形式的考虑 续期的扩展 三.需求实现 主题色的改变 组件样式的扩展 element plus对于各种函
-
Yii安装EClientScript插件扩展实现css,js文件代码压缩合并加载功能
本文实例讲述了Yii安装EClientScript插件扩展实现css,js文件代码压缩合并加载功能.分享给大家供大家参考,具体如下: 扩展插件下载地址,解压后复制到/protected/vendor/ https://github.com/muayyad-alsadi/yii-EClientScript main配置文件配置插件,components里面增加 //js,css代码压缩,合并 'clientScript' => array( 'class' => 'application.ven
-
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
原理:使用定时器,即setInterval(fn,i),每隔i秒执行fn. 下面给出具体的代码 1.代码如下: <span style="font-size:14px;"><!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>用js实现每隔一秒刷新时间(含年月日时分秒)</tit
-
将目录下的文件按扩展名分类的bat代码
其实就是利用强大的for命令实现 实现代码: 复制代码 代码如下: for %%i in (*) do (md %%~ximove *%%~xi %%~xi)pause %~xI - 仅将 %I 扩展到一个文件扩展名只打印文件的扩展名FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xipause
-
让IIS支持任意扩展名和未知扩展名的下载(下载站设置)
如果下载空间里面有asp,php文件不建议这样设置,如果这样设置了又不想让asp,php文件被别人下载可以使用. 第一步: 取消网站执行权限 2.为防止asp,php文件被下载,没有就不需要设置 让IIS支持任意扩展名和未知扩展名的下载 1. 打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击"属性". 2. 单击"MIME 类型". 3. 单击"新建". 4. 在"扩展名"框中,键入星
随机推荐
- 用XML和SQL 2000来管理存储过程调用
- win2003 Server配置SQL Server 2005远程连接的方法
- jquery append()方法与html()方法的区别及使用介绍
- Vue的Flux框架之Vuex状态管理器
- Quartz之Job与JobDetail深入解析
- ES6新特性八:async函数用法实例详解
- 原生js仿jquery实现对Ajax的封装
- Git 创建分支提交远程分支详解
- MySQL笔记之触发器的应用
- php源代码安装常见错误与解决办法分享
- XSL简明教程(7)XSL 的控制语句
- 基于JavaScript实现随机颜色输入框
- 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
- jQuery学习5 jQuery事件模型
- Jquery揭秘系列:ajax原生js实现详解(推荐)
- 详解 Linux中的关机和重启命令
- 通过指甲看健康 指甲上的半月痕你懂多少?
- iOS优雅的将CALayer旋转360度示例代码
- docker run起来之后执行多条命令
- linux下安装solr的教程详解