Автоматически генерировать привязки go к библиотеке c ++ - PullRequest
1 голос
/ 10 ноября 2019

Я работаю над программой , которая из кода 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 можно найти здесь .

...