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;
 }

崇高なテキスト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>

CFLAGS を介してヘッダー ファイルを検索し、LD_FLAGS を介して libariy を検索するように gcc に指示した場合、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

順番に含めているファイルの 1 つに , が含まれていますが、それがパスにない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 に答える