dpq755012465 2018-07-31 23:36
浏览 358

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

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.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮