我猜这是一个链接器错误,但我花了很多时间并没有找到有效的答案。我有一个 OpenCV C++ 程序,当我尝试编译
cv::Mat newMatObject;
风格的东西时,它给了我错误/usr/local/lib/libopencv_core.a(persistence.cpp.o): undefined reference to symbol 'gzclose'
.
.pro 文件包含以下几行:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QtTest
TEMPLATE = app
INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lz -ltbb -ltiff
SOURCES += main.cpp\
qttest.cpp
HEADERS += qttest.h
FORMS += qttest.ui
我是忘记了什么/做错了什么吗?
我让程序在 OpenCV 2.4.9 上正常工作,没有其他变化。我决定继续使用 2.4.13,因为扩展的 gui 在 2.4.9 上不起作用。我从官网下载了OpenCV 2.4.13,然后用这个脚本安装(wget和unzip除外,是手动制作的),最初没有
autoremove
以前的库,但我后来做了问题出现并再次重新运行之前的脚本,以确保正确安装。
跑步
g++ -o opencvtest opencvtest.cpp `pkg-config opencv --cflags --libs`
使用类似的代码行可以毫无问题地提供所需的结果。
将
-lz
添加到您的LIBS
:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lz