Wie man C++-Code in Go verwendet: Aufruf von C++-Funktionen und -Klassen über C
Hallo zusammen! Ich schreibe seit etwa einem Jahr in Go und bin jetzt auf eine Aufgabe gestoßen, die mich ratlos gemacht hat. Ich habe eine große C++-Bibliothek, die komplexe Bildverarbeitungslogik implementiert. Ich möchte sie in meinem Go-Projekt verwenden, weiß aber nicht, wie ich C++-Funktionen aus Go richtig aufrufen kann.
Ich habe gelesen, dass Go über cgo mit C interagieren kann, aber C++ ist eine ganz andere Geschichte. Ich habe versucht, ein einfaches Beispiel zu schreiben: Es gibt eine C++-Klasse ImageProcessor mit einer Methode process(), die ein Byte-Array entgegennimmt und ein Ergebnis zurückgibt. Ich habe einen C-Wrapper erstellt, aber beim Linken treten Fehler "undefined reference" auf. Hier ist ein Beispiel meines Codes:
```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)
}
```
Und die C++-Header-Datei:
```cpp
// image_processor.h
class ImageProcessor {
public:
int process(unsigned