Я пытаюсь скомпилировать сетевую библиотеку C / C ++ для игровой сети RakNet для использования в Go. В настоящее время я использую swig -c++ -go -cgo -intgosize 64 build.swigxx && go build
для преобразования проекта в интерфейс Go, но у меня возникает следующая ошибка:
build_wrap.cxx:886:56: error: variable or field '_wrap_RakNetworkFactory_set_gorak_aae8103e4a7c6905' declared void
void _wrap_RakNetworkFactory_set_gorak_aae8103e4a7c6905(RAK_DLL_EXPORT *_swig_go_0) {
^
build_wrap.cxx:886:73: error: '_swig_go_0' was not declared in this scope
void _wrap_RakNetworkFactory_set_gorak_aae8103e4a7c6905(RAK_DLL_EXPORT *_swig_go_0) {
^
build_wrap.cxx:2366:1: error: expected '}' at end of input
Насколько я могу судить, ему не нравится, когда RAK_DLL_EXPORT
определяется как пустой (#define RAK_DLL_EXPORT
), но я точно не знаю, что я делаю, чтобы понять, так ли это.
Эта проблема, по-видимому, особенно связана с сеттерами, создаваемыми с помощью swig, потому что, если я удаляю заголовочный файл, что происходит выше, swig выдаст мне больше ошибок аналогичного характера.
Единственное, что смутно приближается к тому, что я пытаюсь сделать, это это , но похоже, что они используют совершенно другую версию RakNet. Многие ресурсы, относящиеся к swig, cgo и компиляции C ++ в go, кажутся довольно устаревшими, и я не нашел в них особого смысла.
Может ли кто-нибудь, кто понимает эти технологии лучше меня, помочь мне разобраться в этом?