Ruby与C++交互主要有以下两种方式:
- SWIG方式
- Rice方式
GOOGLE了一下,关于它们使用的看的有点乱,无法完整做出一个demo,最后都是通过运行它们的示例再学习使用的。
SWIG方式
SWIG方式是广泛使用的方式,它支持包括Ruby在内的十几种语言调用C++库
安装
执行命令 brew install swig
使用
- 生成待调用函数
my_math.h
1 |
|
my_math.cpp
1 |
|
- 生成extconf.rb文件
1 | require 'mkmf' |
- 生成example.i文件
1 | %module example |
- 生成测试程序run_me.rb
1 | require_relative 'Example' |
- 运行
1
2
3
4swig -ruby example.i
ruby extconf.rb
make
ruby run_me.rb
Rice方式
安装
执行命令 gem install rice
使用
可以先从源码中的示例入手,以下只写记录与Rice不同的地方。
- 修改extconf.rb文件
1 | #不能使用'mkmf', 不然下面include ‘rice/Class.hpp’时会找不到rice |
- 修改example.i为example.cpp文件
1 |
|
- 修改测试程序run_me.rb文件
1 | puts "#{a} + #{b} = #{Example.new.add(a, b)}" |
- 运行
不执行此命令 swig -ruby example.i