利用SWIG将C/C++库包装成Ruby模块
来源:互联网 发布:小鸡手柄连接mac 编辑:程序博客网 时间:2024/05/02 02:47
写了很多C/C++库,又想在Ruby中使用它们?不必用Ruby重写代码,SWIG(下载)可以帮你做到。 请参考以下示例。
(一)准备C++源文件
/* 头文件: example.h */
extern double My_var;
int factorial(int n);
/* 源代码: example.cpp */
double My_var = 3.0;
int factorial(int n)
{
return n>1 ? factorial(n-1) : 1;
}
(二)编写SWIG的interface文件
/* File example.i */
/* 将来Ruby中采用的Module名称 */
%module example
%{
#include "example.h"
%}
/* 也可以在这里把变量、函数的声明直接列出来,但包含头文件显然更简洁、方便 */
%include "example.h"
(三)使用SWIG产生wrap文件。注:C++源代码需使用-c++参数
swig -c++ -ruby example.i # => example_wrap.cxx
(四)编译动态链接库。注:g++需使用-fPIC参数以生成Position Independent Code(PIC,位置无关代码),用于生成动态链接库(.so) ,在编译wrap文件时还应通过-I参数加上ruby.h所在位置(具体视安装位置不同而不同)。
g++ -c example.c # => example.o
g++ -fPIC -c example_wrap.cxx -I/usr/local/lib/ruby/1.8.7/x86-64 # => example_wrap.o
g++ -shared example.o example_wrap.o -o example.so
(五)使用
irb(main):001:0> require 'example'
=> true
irb(main):002:0> Example.My_var
=> 3.0
irb(main):003:0> Example.factorial(5)
=> 120
- 利用SWIG将C/C++库包装成Ruby模块
- SWIG,把C/C++ API 导出成Java,C#,Python,Ruby,Php的类库
- SWIG and Python(用SWIG将C/C++封装为Python扩展模块)
- python 中用SWIG包装C和C++和接口
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用swig实现python调用C/C++的方法
- 利用 SWIG 转换 C/C++ 接口到 Java 接口
- VS中利用swig实现c/c++导出python接口
- 利用swig实现python调用C/C++的方法
- 利用swig实现python调用C/C++的方法
- 利用Swig在python中调用C/C++代码
- c#利用SWIG调用c++dll学习总结
- 使用SWIG将C/C++库移植到其他语言中
- Android突破八.使用SWIG将C/C++库移植到其他语言中
- 开博
- 关于VMware虚拟机的上网问题[Workstation版本]
- 在android 4.0上开发触摸设备驱动需要注意的几点
- jde中文名杰德爱华兹(中国)软件系统有限公司
- JIRA 5 社交功能
- 利用SWIG将C/C++库包装成Ruby模块
- 给浮躁的软件业同仁
- 将linux配置为代理网关
- 使用strace, ltrace寻找故障原因的线索
- ZooZ推出应用内移动支付SDK
- OpenCv 2.3.1 使用出现的问题!
- 【Android工具】被忽略的UI检视利器:Hierarchy Viewer
- Android开发中常用的Eclipse快捷键
- 线状数组的简单的运用