Como usar código C++ em Go: chamando funções e classes de C++ através de C
Olá a todos! Escrevo em Go há cerca de um ano e agora me deparei com uma tarefa que me deixou perplexo. Tenho uma grande biblioteca em C++ que implementa uma lógica complexa de processamento de imagens. Quero usá-la no meu projeto Go, mas não sei como organizar corretamente a chamada de funções C++ a partir do Go.
Li que o Go pode interagir com C através do cgo, mas C++ é uma história completamente diferente. Tentei escrever um exemplo simples: existe uma classe ImageProcessor em C++ com um método process() que recebe um array de bytes e retorna um resultado. Criei um wrapper em C, mas na linkagem ocorrem erros "undefined reference". Aqui está um exemplo do meu código:
```go
package main
/*
#include "image_processor.h"
*/
import "C"
import "fmt"
func main() {
data := []byte{1, 2, 3, 4, 5}
result := C.process_image(&data[0], C.int(len(data)))
fmt.Println(result)
}
```
E o arquivo de cabeçalho C++:
```cpp
// image_processor.h
class ImageProcessor {
public:
int process(unsigned