Dynamisches FFI in Go

8

Ist es möglich, dynamisch fremde C-Bibliothek (dll) zu laden und seine Funktionen in Go aufzurufen?

Ich weiß, dass es cgo gibt, das verwendet wird, um statisch an C-Funktionen zu binden, aber ich bin an einem dynamischen Weg interessiert.

    
Marko 09.11.2010, 10:28
quelle

1 Antwort

6

Kurze Antwort: Nein. (Zumindest nicht mit GC, GCCGO ist GCC Linkbar, so könnte es möglich sein)

Mittlere Antwort: Sie können jedoch statisch beispielsweise libffi oder libdl binden und dann it verwenden, um andere Bibliotheken dynamisch zu laden.

Lange Antwort: Sie können go-Pakete in C und ASM mit dem go toolchains C-Compiler und Assembler schreiben (siehe zB src / pkg / runtime). So könnten Sie ein FFI in C oder ASM als Go-Paket schreiben.

Bearbeiten: Aus den Kommentaren (jetzt auch CW)

Alternativ kann es mit den Paketen syscall und unsafe gemacht werden (leicht in Windows, aber ich denke, es wäre in Linux schwieriger und nicht weit von der dritten Lösung oben).

Ссылка

    
cthom06 10.11.2010, 13:09
quelle

Tags und Links