2010-11-21 4 views

Antwort

3

Da C-Header-Dateien in C geschrieben sind, aber Ruby-Dolmetscher nur Rubin interpretieren. Außerdem sind die Headerdateien möglicherweise nicht zur Laufzeit verfügbar.

Dort hat wurde über automatische Generierung attach_function Anrufe aus Headern. Wie ich oben angedeutet habe, bedeutet dies im Grunde genommen, dass Sie einen vollständigen C-Compiler implementieren müssen (na ja, die ganze vordere Hälfte von einem, um genau zu sein). Im Moment konzentrieren sich die Ruby-Implementierer mehr darauf, Ruby so schnell wie C laufen zu lassen, um die Notwendigkeit der Verwendung von FFI an erster Stelle zu verringern, anstatt ihren eigenen C-Compiler zu schreiben (was ein nicht-triviales Unterfangen ist, obwohl Sie es nur tun müssen) die lexing, parsing, semantic analysis und typing parts, nicht die eigentliche Codegenerierung oder -optimierung).

+0

Das macht Sinn. Vielen Dank! –

2

Wie Jörg sagt, bedeutet die Implementierung eines Header-Scanners die Implementierung eines Teils des C-Compilers, um alles richtig zu machen.

Eine Sache, die Sie gerne versuchen, die Schmerzen zu lindern, ist die FFI Swig Generator. Es verwendet swig, um die FFI-Schnittstelle zu erzeugen. Es bedeutet immer noch, dass Sie etwas Arbeit machen müssen, was zu einem Cut'n'Paste-Job führen kann, um die Eingabedatei für einfache Schnittstellen zu erstellen.

Verwandte Themen