我使用OSX10.12,我尝试在tensorflow中使用OpenCV,我使用了这个question中提到的第一种方法。
我成功构建了我的代码,但执行时有一些问题如下:
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",
],
)
我该如何解决这个问题?
答案 0 :(得分: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,
)
[注意]对于不同的操作系统,会创建不同的动态库,例如:
即便如此,如果您遇到任何问题,请设置DYLD_PRINT_LIBRARY
环境变量以检查是否链接了正确的库,有时不同版本的库可能会让您忙碌。