Я изучаю, как писать расширения Ruby C, и я прохожу мимо простейших примеров. Я пытался добиться чего-то с сокетами, поэтому я попытался создать расширение, которое определит класс под rb_cIPSocket
.Возможно ли использовать rb_cIPSocket в расширении ruby C
В верхней части моего файла C У меня есть:
#include "rubysocket.h"
И я получаю:
...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")
И так далее. Что мне здесь не хватает? Почему я не могу включить этот заголовочный файл? Я использую OSX с RVM и Ruby 1.9.3-p448. Спасибо.
Благодарим за указатель. Это сделало трюк для меня: 'ipSocketClass = rb_const_get (rb_cObject, rb_intern (" IPSocket "));' – radekg
Вот более продвинутый ресурс: http://clalance.blogspot.be/2011/01/writing-ruby-extensions-in -c-part-3.html – radekg
И вот лучший ресурс, поэтому кажется: http://media.pragprog.com/titles/ruby3/ext_ruby.pdf – radekg