对于一些快速背景,我在Ubuntu 14.04上有OpenCV 2.4.11。我在OSX上编译时没有任何问题,所以我已经移植到了试图让它在Linux上运行。
在尝试编译一个非常简单的OpenCV cpp应用程序时,我从命令行中丢失了DSO - 如下所示:
#define USE_OPENCV
#include <cstring>
#include <cstdlib>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <algorithm>
#include <memory>
#include <utility>
using namespace std;
int main (int argc, char** argv){
cv::Mat img = cv::imread("/home/roots/Matt/RCME/Data/Data_256/0/000000.jpg");
cv::imshow("image", img);
cv::waitKey(0);
return 0;
}
这是我正在使用的Makefile
CC = g++ -std=c++11
LFLAGS = $(`pkg-config --cflags --libs opencv`) -L/usr/local/cuda-7.5/lib64 -L $(QTLIB)
INCLUDES = -L $(QTINC)
all: main
main: classify.cpp
$(CC) -o classify classify.cpp $(LFLAGS) `pkg-config --cflags --libs opencv` `pkg-config --cflags --libs protobuf` $(INCLUDES) -lQtCore -lQtGui
以下是我运行make时终端吐出的内容
make
g++ -std=c++11 -o classify classify.cpp -L/usr/local/cuda-7.5/lib64 -L `pkg-config --cflags --libs opencv` `pkg-config --cflags --libs protobuf` -L -lQtCore -lQtGui
/usr/bin/ld: /usr/local/lib/libopencv_highgui.a(window_QT.cpp.o): undefined reference to symbol '_ZN7QObject10childEventEP11QChildEvent'
//usr/lib/x86_64-linux-gnu/libQtCore.so.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [main] Error 1
任何人对如何处理此事都有任何建议?我正在链接(至少我认为我)到lQtCore和lQtGui,为什么我仍然看到DSO错误?