Почему ruby ​​ffi нуждается в привязке attho_function, когда есть файлы заголовка?

StackOverflow https://stackoverflow.com/questions/4236484

  •  26-09-2019
  •  | 
  •  

Вопрос

Есть ли способ указать Ruby FFI в заголовочный файл вместо записи вызовов Attach_function? Файл заголовка в основном имеет одинаковую точную информацию.

temp_convert.rb:

attach_function :temp_convert, [:float], :float

temp_convert.h:

float temp_convert(float temp);
Это было полезно?

Решение

Поскольку файлы заголовки C записываются в C, но переводчики Ruby только интерпретируют Ruby. Кроме того, файлы заголовка даже не будут доступны во время выполнения.

Там имеет разговаривали о автоматической генерации attach_function звонки от заголовков. Однако, как я намекнул выше, это в основном означает, что вы должны реализовать полный компилятор C (ну полную переднюю половину одного, быть точным). На данный момент реминги Ruby более сосредоточены на том, чтобы сделать Ruby Run так быстро, как и C, чтобы смягчить необходимость использования FFI в первую очередь, чем написание своего собственного компилятора C (что является не тривиальным обязательством, даже если вам нужно только сделать Лексин, разбор, семантический анализ и печатание деталей, а не фактическое поколение или оптимизация кода).

Другие советы

Как говорит Jörg, реализация сканера заголовка означает реализацию довольно много компилятора C, чтобы получить все правильно.

Одна вещь, которую вы хотели бы попытаться облегчить боль FFI Swig Generator. Отказ Он использует SWIG для генерации интерфейса FFI. Он по-прежнему означает, что вам нужно сделать немного работы, что может кипеть до задания Cut'n'Paste для генерации входного файла Swig для простых интерфейсов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top