I'm attempting to implement some C++ code that takes advantage of opencv2 and zbar in my Go code. I'm including it in my file as such:
// #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"
In the hpp file containing decodes declaration I have:
#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);
The point of failure has consistently been when a C++ header file for the standard library is included. In this case it gets through zbar.h just fine, but when it gets to opencv2 it fails with:
/usr/include/opencv2/video/background_segm.hpp:47:16: fatal error: list: No such file or directory
How should I go about getting cgo to locate the standard library files? If it's using g++ as the documentation says it should be, then it should be able to find and link them, but this isn't happening.