使用Bazel编译器构建OpenCV 3.3.0程序会产生链接错误

时间:2018-04-18 11:33:55

标签: c++ opencv tensorflow bazel

我正在尝试使用Bazel编译基于OpenCV的C ++程序,我正面临一个问题。

我用这个WORKSPACE文件创建了我的项目:

new_local_repository(
name = "opencv330",
path = "/usr/opencv330",
build_file = "opencv330.BUILD",)

和此opencv330.BUILD文件:

cc_library(
name = "opencv330",
srcs = glob(["lib/*.so*"]),
hdrs = glob(["include/**/*.hpp", "include/**/*.h", 
"/include/opencv2/*.h", "/include/opencv2/*.hpp"]),
includes = ["include"],
visibility = ["//visibility:public"], 
linkstatic = 1,
)
c_binary(
    name = "main",
    srcs = ["main.cc"],
    deps = [
    "@opencv330//:opencv330"
    ],
)

作为一个例子,我尝试使用简单的Opencv程序,该程序从文件中读取视频:

CvCapture* g_capture = NULL; // Структура для видеофайла
g_capture = cvCreateFileCapture("1080.mp4");
IplImage* frame;
frame = cvQueryFrame(g_capture);
cvNamedWindow("original", 0); // Создание окна


while(1){
 frame = cvQueryFrame(g_capture); // Последовательное       чтение кадров

 if (!frame) { // Конец файла, кадров больше нет
        break;
    }

  // Display the resulting frame
 cvShowImage("original", frame); // Отображение кадра

  // Press  ESC on keyboard to exit
  char c = cvWaitKey(15); // Ожидание 15 мс, получение ASCII кода клавиши
  if (c == 27) { // Если Esc - выход из цикла
      break;
  }
}

// When everything done, release the video capture object
cvReleaseCapture(&g_capture); // Закрытие файла

// Closes all the frames
cvDestroyAllWindows();

但现在我有错误:

  

在./tensorflow/core/framework/tensor.h:19:0中包含的文件中,                    来自./tensorflow/cc/framework/ops.h:21,                    来自./tensorflow/cc/ops/const_op.h:19,                    来自tensorflow / examples / label_image / main.cc:41:/home/viol5728/tensorflow-r1.7/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42:   致命错误:不支持/ Eigen / CXX11 / Tensor:没有这样的文件或目录

     

包括“unsupported / Eigen / CXX11 / Tensor”

但文件Tensor在目录“unsupported / Eigen / CXX11 / Tensor”中! (Tensorflow 1.7)

系统中有两个目录:

1) “/家/ viol5728 / tensorflow-R1.7 / THIRD_PARTY / eigen3 /不支持/本征/ CXX11”

2)“/ usr / include / eigen3 / unsupported / Eigen”

那我怎么能把Bazel指向第一个目录?????

0 个答案:

没有答案