如何让CGO查找和使用C ++标准库头文件

时间:2018-07-31 23:36:34

标签: go cgo

我正在尝试实现一些在我的Go代码中利用opencv2和zbar的C ++代码。我将其包含在我的文件中,例如:

// #cgo CXXFLAGS: -I/usr/local/include/opencv -I/usr/include/opencv2 
// #cgo LDFLAGS: -lstdc++ -L/usr/local/lib/ -lopencv_core -lopencv_imgproc  -lopencv_video -lopencv_highgui -lopencv_ml -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_stitching -lzbar
// #include "/home/anon/Documents/Golang/Decoder/decode.cpp"
import "C"

在包含解码声明的hpp文件中,我有:

#include <zbar.h>
#include <opencv2/opencv.hpp>
#include <vector>

#define STR(s) #s

typedef struct {
    string type;
    string data;
    vector <cv::Point> location;
} decodedObject;


string decode(string im);

故障点一直是包含标准库的C ++头文件时。在这种情况下,它通过zbar.h就可以了,但是当它进入opencv2时,它失败并显示:

/usr/include/opencv2/video/background_segm.hpp:47:16: fatal error: list: No such file or directory

我应该如何让cgo定位标准库文件?如果它按照documentation的说明使用g ++,则它应该能够找到并链接它们,但这没有发生。

0 个答案:

没有答案