源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Ruby使用C++扩展实例(含C++扩展代码示例)

  • 时间:2022-06-26 22:24 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Ruby使用C++扩展实例(含C++扩展代码示例)
早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。 [b]建立 extconf.rb [/b]
[u]复制代码[/u] 代码如下:
require 'mkmf' $libs = '-lstdc++' create_makefile 'foo'
[b]建立 foo.cc [/b]
[u]复制代码[/u] 代码如下:
#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); }
[b]生成扩展 foo.so [/b]
[u]复制代码[/u] 代码如下:
$ ruby extconf.rb $ make # 如果要安装至site-ruby $ make site-install
[b]测试文件 test.rb [/b]
[u]复制代码[/u] 代码如下:
require 'foo.so' puts Foo.plus(3,4) $ ruby test.rb 7
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部