Какие инструменты существуют сегодня для реализации пакета golang в C ++? Я хочу, чтобы это работало:
import (
"fmt""zuzu" // my package
}
v := zuzu.Func(1,2,3)
и zuzu.Func()
должен быть написан на C ++ следующим образом:
// C++ code:
int Func(int a, int b, int c) {
return a + b + c;
}
Должен ли я использовать cgo ( https://golang.org/cmd/cgo/ ) для достижения этой цели? Как я понимаю, я должен создать файл .go, который предоставляет объявления Func () и использует cgo
Синтаксис для ссылки на мой .cpp / .h
файлы с фактической реализацией?
Трудные вопросы
Может ли функция C ++ создавать и возвращать нетривиальные переменные Go, например map[int]map[int]int
?
Может ли функция C ++ возвращать значение типа переменной? Псевдо-CPP-код:
// C++ code
// This function may return map[float32] or int.
MIXED_RETURN_TYPE cpp_func(int x) {
if ( 1 == x ) {
return MAP_OF_FLOATS; // go type: map[float32]
} else {
return 2; // go type: int
}
}
Задача ещё не решена.
Других решений пока нет …