2

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

这是我的 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]

感谢您的帮助

4

2 回答 2

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

于 2012-12-10T08:48:52.540 回答
3

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

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

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

#include <ruby/ruby.h>
于 2012-12-10T08:45:28.867 回答