最近的项目使用了,从Ruby调用C的代码还是比较简单,尤其是利用SWIG来生成代码。
现在有个问题,怎样从C/C++中调用ruby的代码?
查看了网上一些资料,发现这方便的东西太少。
找到http://blog.csdn.net/daiyuchao/archive/2008/07/08/2625775.aspx,不过这个编译之后,运行会出错。
后来查看了:http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/14864
改写了相应的代码。运行正确。
同时在原有的基础上,我增加了获取字符串的调用,发现也很不错。呵呵
我把C的代码贴出来:
Test.c代码
ruby的代码 sum.rb为:
getString是我加入的, 编译运行之后产生输出:
hello,2
hello,3
hello 1Sum to 5 is 10
Sum to 10 is 45
Sum to 15 is 105
Sum to -1 doesn't compute!
Sum to 20 is 190
Sum to Hello, I'm from Ruby3That's wonderful Id
至于怎样编译此c文件,建议去参考怎样编译ruby的环境吧。
我使用的是 mingw 来编译ruby的。
然后link的时候可以使用下面的参数:
g++ -o Your.exe Test.o -L. -LC:/ruby-1.9.1/usr/local/lib -L. -Wl,--enable-auto-
image-base,--enable-auto-import -lmsvcrt-ruby191 -lstdc++ -lshell32 -lws2_32