2009-11-19 13 views
22

¿Cómo se puede interconectar un programa Go con una biblioteca C?Interfaz Go with C libraries

He estado navegando por el código fuente de Go, pero todavía no me di cuenta. Si alguien ya lo ha hecho, ¿podría compartirlo, por favor?

ACTUALIZADO: Gracias a @fserb, estoy publicando alguna documentación de las fuentes Go:

Cgo permite la creación de Go paquetes que requieren el código C.

Uso: CGO [opciones del compilador] file.go

El compilador se pasan opciones través sin interpretar cuando se invoca gcc para compilar las partes C del paquete .

El file.go de entrada es una archivo fuente Go válido sintácticamente que importa la pseudo-paquete de "C" y, a continuación se refiere a tipos, tales como C.size_t, variables tales como C.stdout, o funciones tales como C.putchar.

Si la importación de "C" es inmediatamente precedida de un comentario, ese comentario es utilizado como un encabezado al compilar los C partes del paquete. Por ejemplo:

// #include <stdio.h> 
// #include <errno.h> 
import "C" 

Cgo transforma el archivo de entrada en cuatro archivos de salida: dos de origen archivos Go, un archivo de C para 6c (o 8c o 5c), y un archivo de C para gcc.

Las reglas paquete makefile estándar en Make.pkg automatizar el proceso de usar CGO. Consulte $ GOROOT/misc/cgo/stdio y $ GOROOT/misc/cgo/gmp para ver ejemplos.

Cgo aún no funciona con gccgo.

Respuesta

19

Compruebe cgo. Además, consulte misc/cgo/gmp en el código fuente Go para obtener un código de ejemplo sobre cómo ajustar una biblioteca C en Go.

+0

Interesante ... Estudiaré de inmediato. ¡Gracias! – jldupont