2013-07-19 1 views
0

Ruby C 확장을 작성하는 방법을 배우고 있으며 가장 간단한 예제를 통과했습니다. rb_cIPSocket 아래에 클래스를 정의하는 확장을 만들려고 했으므로 소켓을 사용하여 무언가를 얻으려고했습니다.Ruby C 확장자에서 rb_cIPSocket을 사용할 수 있습니까?

#include "rubysocket.h" 

을 내가 받고 있어요 : 내 C 파일의 맨 위에

내가 가진

아마 대부분의 경우
...s.c:3:31: error: rubysocket.h: No such file or directory 

.

#include "rubysocket.h" 
#include "socket/rubysocket.h" 
#include "ext/socket/rubysocket.h" 
#include <rubysocket.h> 
#include <socket/rubysocket.h> 
#include <ext/socket/rubysocket.h> 

을 그리고 이것은 내 extconf.rb이다 : 그러나, 나는 가능한 모든 경로를 시도 등등

require 'mkmf' 
dir_config("my_ext") 
have_library("c", "main") 
create_makefile("my_ext") 

그리고있다. 여기에 실종 된 것은 무엇입니까? 왜 그 헤더 파일을 포함 할 수 없습니까? RVM과 Ruby 1.9.3-p448에서 OSX를 사용하고 있습니다. 감사합니다.

답변

3

어디서 rubysocket.h가 생깁니 까? 이 루비의 소스 코드의 중심부에의 경우 확률은 루비의 사용은 "개인"입니다,하지만 당신은 ...처럼 찾아 볼 수

VALUE ipSocketClass = rb_const_get ("IPSocket");

등이있다. GL!

+1

포인터 주셔서 감사합니다. 이것은 나를위한 트릭을했다 :'ipSocketClass = rb_const_get (rb_cObject, rb_intern ("IPSocket"));' – radekg

+0

여기 고급 리소스가있다 : http://clalance.blogspot.be/2011/01/writing-ruby-extensions-in -c-part-3.html – radekg

+0

그리고 여기는 최고의 리소스입니다. http://media.pragprog.com/titles/ruby3/ext_ruby.pdf – radekg