Интерфейс Go с библиотеками C - PullRequest
22 голосов
/ 19 ноября 2009

Как связать программу Go с библиотекой C?

Я просматривал исходный код Go, но до сих пор не понял. Если кто-то уже сделал это, не могли бы вы поделиться, пожалуйста?

ОБНОВЛЕНО: Благодаря @fserb я публикую некоторую документацию из источников Go:

Cgo позволяет создавать Go пакеты, которые вызывают код C.

Использование: cgo [опции компилятора] file.go

Опции компилятора переданы через не интерпретируется при вызове GCC для компиляции C частей пакет.

Входной файл.go является синтаксически действительный исходный файл Go, который импортирует псевдопакет "С", а затем относится к такие типы, как C.size_t, такие переменные как C.stdout, или функции, такие как C.putchar.

Если импорт "C" происходит немедленно предшествует комментарий, этот комментарий используется в качестве заголовка при компиляции C части пакета. Например:

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

Cgo преобразует входной файл в четыре выходных файла: два исходных кода Go файлы, файл C для 6c (или 8c или 5c), и файл C для gcc.

Стандартные правила makefile пакета в Make.pkg автоматизирует процесс использования ОЦП. Смотрите $ GOROOT / misc / cgo / stdio и $ GOROOT / misc / cgo / gmp для примеров.

Cgo еще не работает с gccgo.

1 Ответ

19 голосов
/ 19 ноября 2009

Чек cgo . Кроме того, посмотрите на misc / cgo / gmp в исходном коде Go для примера кода о том, как обернуть библиотеку C в Go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...