С тех пор, как вышел Go 1.5, я начал еще раз взглянуть на то, как я могу интегрировать его в существующий проект.
База кода проекта написана полностью на языке C для доступа к аппаратным средствам и другим забавным материалам на низком уровне. Однако некоторые вещи более высокого уровня утомительны, и я хотел бы начать писать их на языке более высокого уровня (Go)
Можно ли каким-либо образом вызвать код Go из программы C? Я установил Go 1.5, который добавил -buildmode=c-archive
(https://golang.org/s/execmodes), который я пытаюсь получить.
Однако я не могу заставить Go генерировать соответствующие файлы заголовков, чтобы мой проект мог фактически скомпилироваться. Когда я создаю архив, я вижу функцию в экспортированных символах (используя objdump), но без файлов заголовков, чтобы включить gcc, жалуется на функцию, которая не существует (как ожидалось)
Я новичок в Go - однако, я люблю этот язык и хотел бы использовать его. Есть ли какой-либо идиоматический способ ( "идиоматический" часто используется в мире Go, который я вижу...), чтобы заставить это играть красиво друг с другом?
Причина, по которой я задал этот вопрос и конкретно упомянул Go 1.5, заключается в том, что согласно этому документу https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit?pli=1#heading=h.1gw5ytjfcoke Go 1.5 добавлена поддержка программ non-Go для вызова кода Go. В частности, упоминается в разделе "Код Go, связанный с программой non-Go и вызываемый из нее"