Есть некоторые инструменты, которые помогают в такой ситуации (например rake-compiler
камень), но я предпочитаю использовать RubyInline
камень. Он был разработан для замены медленных критически важных разделов Ruby-кода с реализациями на других языках (например, C поддерживается из коробки), но он также используется для встроенного кода, который вызывает внешние библиотеки C.
RubyInline пример выглядит следующим образом:
class MyClass
inline(:C) do |builder|
builder.include '<stdio.h>'
builder.c <<-END
void my_printf(char * string){
printf("%s\\n",string);
}
END
end
end
MyClass.new.my_printf("Abc")
# prints 'Abc'
Приятной особенностью RubyInline является то, что вы не должны иметь отдельные файлы для C и Ruby, некоторые основные преобразования аргументов поддерживаются из коробки и вам не нужно писать код склеивания. Плохие части в том, что у вас нет полного контроля над компиляцией и т. Д. Лично я считаю RubyInline очень мощным решением.
Я решительно это рассмотрю. В рассматриваемой библиотеке реализованы упрощенные окна и графика. Поскольку на C и других языках уже есть много альтернатив, я думал, что это не добавит большого значения. –