我正在尝试实现一些在我的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 ++,则它应该能够找到并链接它们,但这没有发生。