亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用C++來編寫Ruby程序擴展的教程

2019-10-26 19:25:35
字體:
來源:轉載
供稿:網友

Ruby 最酷的功能之一就是使用 C/C++ 定義的應用程序編程接口 (API) 擴展它。Ruby 提供了 C 頭文件 ruby.h,它隨附提供了許多功能,可使用這些功能創建 Ruby 類、模塊和更多內容。除了頭文件,Ruby 還提供了其他幾個高層抽象來擴展基于本地 ruby.h 構建的 Ruby,本文要介紹的是 Ruby Interface for C++ Extensions 或 Rice。
創建 Ruby 擴展

在進行任何 Ruby 的 C API 或 Rice 擴展前,我想明確地介紹一下創建擴展的標準過程:

    您具有一個或多個 C/C++ 源代碼,可使用它們構建共享庫。     如果您使用 Rice 創建擴展,則需要將代碼鏈接到 libruby.a 和 librice.a。     將共享庫復制到同一文件夾,并將該文件夾作為 RUBYLIB 環境變量的一部分。     在 Interactive Ruby (irb) prompt/ruby 腳本中使用常見的基于 require 的加載。如果共享庫名為 rubytest.so,只需鍵入 require 'rubytest' 即可加載共享庫。

假設頭文件 ruby.h 位于 /usr/lib/ruby/1.8/include 中,Rice 頭文件位于 /usr/local/include/rice/include 中,并且擴展代碼位于文件 rubytest.cpp 中。 清單 1 顯示了如何編譯和加載代碼。
清單 1. 編譯和加載 Ruby 擴展

bash# g++ -c rubytest.cpp –g –Wall -I/usr/lib/ruby/1.8/include /  -I/usr/local/include/rice/includebash# g++ -shared –o rubytest.so rubytest.o -L/usr/lib/ruby/1.8/lib /  -L/usr/local/lib/rice/lib -lruby –lrice –ldl -lpthreadbash# cp rubytest.so /opt/testbash# export RUBYLIB=$RUBYLIB:/opt/testbash# irbirb> require 'rubytest'=> true

Hello World 程序

現在,您已經準備好使用 Rice 創建自己的首個 Hello World 程序。您使用名為 Test 的 Rice API 和名為 hello 的方法創建了一個類,用它來顯示字符串 "Hello, World!"。當 Ruby 解釋器加載擴展時,會調用函數 Init_<shared library name>。對于 清單 1 的 rubytest 擴展,此調用意味著 rubytest.cpp 已定義了函數 Init_rubytest。Rice 支持您使用 API define_class 創建自己的類。清單 2 顯示了相關代碼。
清單 2. 使用 Rice API 創建類

#include "rice/Class.hpp"extern "C"void Init_rubytest( ) {  Class tmp_ = define_class("Test");}

當您在 irb 中編譯和加載清單 2 的代碼時,應得到 清單 3 所示的輸出。
清單 3. 測試使用 Rice 創建的類

irb> require ‘rubytest'=> trueirb> a = Test.new=> #<Test:0x1084a3928>irb> a.methods=> ["inspect", "tap", "clone", "public_methods", "__send__",    "instance_variable_defined?", "equal?", "freeze", …]

注意,有幾個預定義的類方法可供使用,比如 inspect。出現這種情況是因為,定義的 Test 類隱式地衍生自 Object 類(每個 Ruby 類都衍生自 Object;實際上,Ruby 中的所有內容(包括數字)都是基類為 Object 的對象)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产盗摄xxxx视频xxx69| 日韩欧美黄色动漫| 中文字幕自拍vr一区二区三区| 国产精品久久久久久久9999| 97av在线影院| 成人在线视频网站| 欧美精品精品精品精品免费| 亚洲国产一区二区三区在线观看| 91精品啪在线观看麻豆免费| 欧美激情极品视频| 成人美女免费网站视频| 精品女厕一区二区三区| 亚洲性线免费观看视频成熟| 成人国产精品久久久久久亚洲| 97久久国产精品| 奇米成人av国产一区二区三区| 国产精品成人观看视频国产奇米| 色综合久久中文字幕综合网小说| 欧美亚洲在线播放| 国产成人a亚洲精品| 国产成人精品国内自产拍免费看| 2021久久精品国产99国产精品| 欧美成年人网站| 欧美巨猛xxxx猛交黑人97人| 国产丝袜精品第一页| 欧美一区二区三区免费观看| 狠狠躁天天躁日日躁欧美| 精品久久久久久久久久久久久久| 欧美乱人伦中文字幕在线| 精品一区二区电影| 亚洲影院高清在线| 日韩成人中文字幕在线观看| 久久99青青精品免费观看| 中文字幕国产亚洲2019| 91精品国产综合久久香蕉的用户体验| 日韩精品在线观看一区二区| 91在线直播亚洲| 欧美日韩国产中文精品字幕自在自线| 日韩电影第一页| 亚洲精品免费在线视频| 日韩性xxxx爱| 青草热久免费精品视频| 亚洲色图校园春色| 日韩国产精品一区| 欧美国产亚洲精品久久久8v| 国产日本欧美一区二区三区在线| 久久综合伊人77777尤物| 国产日韩中文字幕| 在线电影欧美日韩一区二区私密| 国内精品模特av私拍在线观看| 国产a级全部精品| 亚洲人av在线影院| y97精品国产97久久久久久| 欧美猛交ⅹxxx乱大交视频| 日韩精品在线观看一区| 国产精品夫妻激情| 日韩av一区在线观看| 欧美成人sm免费视频| 久久久久久久网站| 久久久欧美精品| 91精品久久久久久久久中文字幕| 性亚洲最疯狂xxxx高清| 欧美日韩美女视频| 欧美成人午夜激情视频| 欧美成人在线免费视频| 欧美日韩在线第一页| 日韩视频在线免费观看| 欧美日韩久久久久| 亚洲国产欧美一区二区三区同亚洲| 亚洲夜晚福利在线观看| 日av在线播放中文不卡| 亚洲社区在线观看| 欧美精品国产精品日韩精品| 亚洲第一区中文99精品| 国产成人激情视频| 日韩在线高清视频| 亚洲国产精品人久久电影| 久久精品视频在线观看| 久久综合伊人77777尤物| 久久影视电视剧凤归四时歌| 亚洲最大福利视频网站| 日韩专区在线观看| 欧美日韩国产色| 91精品一区二区| 青青久久aⅴ北条麻妃| 亚洲人高潮女人毛茸茸| 免费av一区二区| 日产日韩在线亚洲欧美| 欧美性猛交xxxx| 日韩二区三区在线| 色www亚洲国产张柏芝| 91网站免费观看| 亚洲韩国青草视频| 成人免费在线视频网站| 亚洲a级在线播放观看| 日韩av不卡在线| 97色在线视频| 日本亚洲欧洲色| 国产专区欧美专区| 亚洲最大福利视频网| 欧美电影第一页| 国产欧美日韩精品丝袜高跟鞋| 亚洲免费中文字幕| 日韩精品视频观看| 亚洲新声在线观看| 最近2019年日本中文免费字幕| 亚洲人在线视频| 精品久久久久久亚洲国产300| 日本亚洲欧美成人| 不用播放器成人网| 欧美精品18videos性欧| 日韩国产一区三区| 久久精品国产2020观看福利| 久久天天躁狠狠躁夜夜av| 国产综合视频在线观看| 91精品国产成人| 美女av一区二区| 中文在线不卡视频| 国产精品美女无圣光视频| 97热精品视频官网| 亚洲天堂影视av| 欧美肥老妇视频| 亚洲男人的天堂网站| 欧美在线视频导航| 国产精品女主播| 亚洲变态欧美另类捆绑| 国产一区玩具在线观看| 欧美日韩裸体免费视频| 曰本色欧美视频在线| 91精品国产自产在线| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美激情四射在线日| 亚洲直播在线一区| 欧美精品久久久久久久久久| 日韩激情在线视频| 欧美大奶子在线| 日韩欧美成人网| 国产精品亚洲аv天堂网| 日本久久亚洲电影| 欧美成人午夜视频| 深夜福利亚洲导航| 日韩中文综合网| 国产精品无av码在线观看| 欧美性猛交xxxx乱大交3| 2019国产精品自在线拍国产不卡| 一区二区三区无码高清视频| 国产丝袜精品视频| 欧美激情精品久久久久久| yw.139尤物在线精品视频| 成人av.网址在线网站| 久久精品国产99国产精品澳门| 欧美在线国产精品| 久久99亚洲热视| 亚洲欧美国产高清va在线播| 一区二区三区日韩在线| 欧美激情视频网站| 在线亚洲男人天堂| 亚洲精品电影网在线观看| 国产精品美女久久| 日韩精品免费在线观看| 色一情一乱一区二区| 97成人精品视频在线观看| 97在线观看视频| 成人激情视频小说免费下载|