Avatar ·

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