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. 在"扩展名"框中,键入星
随机推荐
- Python中for循环和while循环的基本使用方法
- DOS命令之ECHO命令的使用
- js限制文本框只能输入数字(正则表达式)
- js闭包的用途详解
- oracle删除已存在的表的实例
- python使用os模块的os.walk遍历文件夹示例
- c#通过app.manifest使程序以管理员身份运行
- Java获取*路径实现探讨
- 详解python 字符串和日期之间转换 StringAndDate
- 取随机记录的语句
- php导出CSV抽象类实例
- 实例解析jQuery中proxy()函数的用法
- CentOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装
- java使用rmi传输大文件示例分享
- java创建线程的两种方法区别
- python检测lvs real server状态
- php另类上传图片的方法(PHP用Socket上传图片)
- PHP中串行化用法示例
- 建站去IDC为您提供60M免费全能型空间服务
- Python3.6实现连接mysql或mariadb的方法分析