【发布时间】:2017-07-27 10:15:59
【问题描述】:
我想使用 opencv 对将馈送到张量流模型的图像执行一些预处理。
预处理部分读入.png 文件,代码作为独立程序工作,但我想在运行张量流模型的程序中使用它,所以我生成了一个目标文件,如下所示。预处理程序可以独立运行。
g++ -std=c++11 preProcess.cpp -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv2 -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -c
tensorflow程序Inference.cc编译如下
g++ -std=c++11 preProcess.o Inference.cc -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv -I/usr/local/include/opencv2 -I/usr/local/include/tf -I/usr/local/include/eigen3 -I/usr/local/include/tf/bazel-genfiles -g -Wall -D_DEBUG -Wshadow -Wno-sign-compare -w -L/usr/local/lib/libtensorflow_cc -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_flann -lopencv_core `pkg-config --cflags --libs protobuf` -ltensorflow_cc -o inference
这会引发以下错误
/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_State::~_State()@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `typeinfo for std::thread::_State@GLIBCXX_3.4.22'
这个错误似乎是链接-L/home/dpk/anaconda2/lib引起的,因为当我不链接那个文件夹时编译很顺利,但是程序无法读取.png文件。因此,该文件夹似乎是处理.png 所必需的。
我需要我的程序来读取 .png 文件以及运行 tensorflow 模型。我怎样才能让它们都工作?
【问题讨论】:
-
它似乎是 C++11 标准的一部分。尝试使用标志
-std=c++11 -
@bracco23 试过了,抛出同样的错误。我将编辑我的问题以包含该标志
-
可能看起来很傻,但请检查您的文件中是否有标题
#include <thread>。 -
@TheApache 感谢您的建议,这也没有帮助,得到了同样的错误。
-
这发生在我身上是因为我的 $PATH 指向的是旧版本的 gcc。
which gcc告诉我。
标签: c++ opencv tensorflow g++ libpng