OSX Tensorflow + Opencv: символ не найден, ожидается в плоском пространстве имен

Я использую OSX10.12, я пытаюсь использовать OpenCV в тензорном потоке, я использую первый метод, упомянутый в этом вопрос.

Я успешно создаю свой код, но при его выполнении возникают следующие вопросы:

dyld: lazy symbol binding failed: Symbol not found: __ZN2cv6String8allocateEm
Referenced from: /Users/philokey/Practice/github/tensorflow/./bazel-bin/tensorflow/examples/test_cv/test_cv
Expected in: flat namespace

Файл сборки выглядит следующим образом:

cc_binary(
name = "test_cv",
srcs = [
    "test_cv.cc",
],
deps = [
    "@opencv//:opencv",
],
)

Как я могу решить эту проблему?


person Philokey    schedule 26.10.2016    source источник


Ответы (1)


Вам необходимо убедиться, что вы правильно обновили следующие файлы в каталоге tensorflow:

в WORKSPACE - (./tensorflow/tensorflow/WORKSPACE) добавьте следующее:

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

opencv.BUILD - (./tensorflow/tensorflow/opencv.BUILD) добавить следующее:

cc_library(
  name = "opencv",
  srcs = glob(["lib/*.dylib*"]),         <<<<<<<
  hdrs = glob(["include/**/*.hpp"]),
  includes = ["include"],
  visibility = ["//visibility:public"],
  linkstatic = 1,
)

[ПРИМЕЧАНИЕ] для разных операционных систем создаются разные динамические библиотеки, например:

  1. линукс -> *.so,
  2. окна -> *.dll и
  3. в OSx -> *.dylib

Даже в этом случае, если у вас возникнут какие-либо проблемы, установите переменную среды DYLD_PRINT_LIBRARY, чтобы проверить, связаны ли правильные библиотеки, иногда разные версии библиотек могут отвлекать вас.

person Milind Deore    schedule 27.01.2017