Я работаю над программой , которая из кода C ++ генерирует .so
и привязки для нескольких языков (C, C ++, Haskell, Java, Php, Python ...), и япытаясь добавить поддержку golang.
Я думаю, что лучший способ получить такой результат - использовать версию C ++ или C и создать привязки go, но это должно быть сделано автоматически. Я пытался использовать Swig , но мне не удалось заставить его работать (вероятно, потому что мы включили .so
, а не .cc
), и я нашел только старыйдокументация (здесь используется go tool 6g
).
Я также пытался создать привязки с cgo
, который не работает с C ++, и я не мог заставить его работать с привязками C (опять же, большинствовероятно, из-за шага .so
.
В конце я должен сгенерировать еще один .so
с несколькими экспортированными функциями, который должен быть автономным, что позволяет компилировать версию C ++ и общаться с ней через канал (почти?) невозможно.
Функции для экспорта часто бывают такими, как:
void init_game(void);
void play_turn(void);
void end_game(void);
Вы можете найти заголовок c ++ здесь и автоматически сгенерированные интерфейсы для C: interface.hh и interface.cc и prologin.h .
Пример исходного кода lib.so
можно найти здесь .