如何在Go中使用C++代码:通过C调用C++函数和类
大家好!我写Go已经大约一年了,现在遇到了一个让我陷入困境的任务。我有一个用C++编写的大型库,实现了复杂的图像处理逻辑。我想在Go项目中使用它,但不知道如何正确地从Go调用C++函数。
我了解到Go可以通过cgo与C交互,但C++完全是另一回事。我尝试写了一个简单的例子:有一个C++的ImageProcessor类,其中包含process()方法,该方法接收字节数组并返回结果。我创建了一个C包装器,但在链接时出现了“undefined reference”错误。以下是我的代码示例:
```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)
}
```
以及C++头文件:
```cpp
// image_processor.h
class ImageProcessor {
public:
int process(unsigned