Ruby 板


LINE

我跟 windows 不是很熟,但就我所知,所有 win32api 不管是 gem 或是什麽, 都是拿来让你呼叫 Win32 API 的,而我看不出来你这边想呼叫什麽 Win32 API? 你想透过 Ruby 呼叫你所编译的程式,这跟 Win32 API, 就我所知,是毫无关系的。 我想你想做的事情,似乎比较接近 Ruby extension, 就是用 C 或 C++ 做出能让 Ruby 使用的程式。那麽通常会有两种作法,一种就是真的照做 Ruby extension 的 方式,你会需要 Ruby 的 header, 在你的程式写 #include "ruby.h" 然後用他的 方法定义能让 ruby 呼叫的程式,最後做出一个 shared library, 可能在 windows 上就是 .dll 吧?我不清楚。 这种作法门槛比较高,如果没有效率考量,或是不需要跟 ruby 做这麽紧密的 连结的话,我不建议用这种方式。另外 ruby 是用 c 写成的,你要用 c++ 的话 可能会比较麻烦。可以参考这个 gem: http://rice.rubyforge.org/ 这会帮你包装好一些 c++ <=> ruby 间的转换。 如果你只需要简单的功能,或是说简单的介面,那我比较推荐 ffi 虽然老实讲我不确定 windows 上能不能用... 试试 gem install ffi 我随手写了一个示范:(请自行把两行接成一个网址) https://github.com/godfat/sandbox/tree/ 8b9f74bee3db71aae9983f30b20f7dc7f45de2a2/mix/ffi 具体内容是 mylib.c: int plus(int x, int y){ return x + y; } 用你的方法 compile 成 shared library, 我的作法是: clang -shared mylib.c -o libmylib.so 接着 ruby.rb 则是: require 'ffi' module MyLib extend FFI::Library ffi_lib './libmylib.so' attach_function :plus, [:int ,:int], :int end 这边我们告诉 ffi 要去读 ./libmylib.so 这个 shared library, 然後把 MyLib.plus 这个 method 直接对应到 libmylib.so 里面的 plus function. 要把各个参数的 type 和 return type 都写出来。 接着就能透过 MyLib.plus(1, 2) 去呼叫 c 里面的 plus function, ffi 会自动把 c 的 3 转换成 Ruby 的 3 (Fixnum) 要呼叫 c 的 function, 这应该是最简单的方式了。应该不能使用 c++, 你真的要用 c++ 也只能再多做个 c 的介面了。 * 最後最後,给你一个诚心的建议不要用 dev-c++ 这种古董了..... 都什麽年代了还在 gcc 3.4.2 实在是.. 七年前的东西了, GNU 五年前就没有在维护了: http://gcc.gnu.org/releases.html 我推荐 Code::Blocks http://www.codeblocks.org/ 这是我几年前离开 windows 和 c++ 时在用的东西, 看起来现在运作应该还良好才是。或是你可以直接用 MinGW 也很好: http://www.mingw.org/ 目前版本似乎是 gcc 4.5 -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.38.235
2F:→ godfat:昨天看 5.0 http://www.bloodshed.net/dev/devcpp.html 12/12 17:32
3F:→ godfat:还在 gcc 3.4.2, 看来作者连网站都换了吗?还是换人更新..? 12/12 17:32
4F:→ godfat:看起来真的是不同人,难怪网站没办法更新,名字应该换的 12/12 17:36
5F:推 Naniko:C++ IDE的话,mac上推荐用xcode直接写(虽然有人讨厌xcode 04/16 15:15
6F:→ Naniko:),unix-like的话netbeans上次感觉不错。 04/16 15:15
7F:→ Naniko:monodevelop上次写c#感觉很猛,很有visual studio express 04/16 15:16
8F:→ Naniko:整盘搬来的味道,但不知能不能拿来当cpp ide 04/16 15:16
9F:→ Naniko:win的话就还是用VC写吧。找不到比Visual Studio方便的IDE了 04/16 15:17
10F:→ Naniko:用textmate.sublimeeditor之类的东西配gcc也很稳就是。 04/16 15:18







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP