在C中嵌入ruby代码

时间:2012-12-10 08:43:07

标签: c ruby

我知道有几个关于此的帖子,但我是堆栈

这是我的C代码

#include </usr/include/ruby-1.9.1/ruby/ruby.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
 ruby_init();
 rb_eval_string("puts 'hello'");
 ruby_finalize();
 return 0;
 }

我在sublime text 2

中编译时出现以下错误
In file included from /Users/pierrebaille/Code/Ruby/embedRuby/embedRubyFirst.c:1:
/usr/include/ruby-1.9.1/ruby/ruby.h:1481:24: error: ruby/subst.h: No such file or directory         
[Finished in 0.1s with exit code 1]

感谢您的帮助

2 个答案:

答案 0 :(得分:6)

您不应该像

那样硬编码头文件的完整路径

#include </usr/include/ruby-1.9.1/ruby/ruby.h>

正确的是

#include <ruby.h>

并告诉你的gcc通过CFLAGS和libariy通过LD_FLAGS搜索头文件,只需不带makefile的命令就可以:

gcc -o demo.exe -I/path/to/ruby/headers rubydemo.c -L/path/to/ruby/lib -lruby-libary-name

答案 1 :(得分:2)

您所包含的其中一个文件包含ruby/subst.h,但似乎ruby不在您的路径中,这就是您在代码中使用此文件的原因:

#include </usr/include/ruby-1.9.1/ruby/ruby.h>

您应该只将“/ some_path /”添加到编译器路径设置,而不是硬编码路径,其中some_path包含文件夹ruby作为子项。现在你自己的包括变成了:

#include <ruby/ruby.h>