无法使用Qt环境在Linux中解析库

时间:2012-09-27 08:34:02

标签: qt opencv qt-creator

经过一些有用的提示,这是这篇文章的新版本,问题是我的程序似乎在某种程度上运行但它只是发出一些错误......我不知道它实际上提到了什么,因为这些库已安装,我将路径形式LIBS + = - LC:/usr/local/lib/ \更改为LIBS += -L/usr/local/lib/ \,因为有人说它实际上是在使用linux(chakra)时引用windows,然后在目录末尾添加“\”并将pkg-config添加到我的.pro文件中,因此这是新版本的新版本......:

    Starting /home/lucifer/PR0J3CTs/FirstOpenCV-build-desktop-Qt_4_8_2_in_PATH__System__Release/FirstOpenCV...
/home/lucifer/PR0J3CTs/FirstOpenCV-build-desktop-Qt_4_8_2_in_PATH__System__Release/FirstOpenCV exited with code 0

Debugging starts
the debug information found in "/usr/lib/libQtOpenGL.so.4.8.2.debug" does not match "/usr/lib/libQtOpenGL.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtGui.so.4.8.2.debug" does not match "/usr/lib/libQtGui.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtCore.so.4.8.2.debug" does not match "/usr/lib/libQtCore.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtTest.so.4.8.2.debug" does not match "/usr/lib/libQtTest.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtNetwork.so.4.8.2.debug" does not match "/usr/lib/libQtNetwork.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtXml.so.4.8.2.debug" does not match "/usr/lib/libQtXml.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtSvg.so.4.8.2.debug" does not match "/usr/lib/libQtSvg.so.4" (CRC mismatch).
the debug information found in "/usr/lib/libQtDBus.so.4.8.2.debug" does not match "/usr/lib/libQtDBus.so.4" (CRC mismatch).
Debugging has finished

这是我的.pro配置[你可以看到我已经评论过(#)两个LIBS配置中的一个,我只是想问哪个可能更准确或更有帮助,昨天我试过并且它发布了一些不兼容性较新版本的libavcodec所以我google了一些并下载了libavcodec.53并对其进行了配置,但我不确定现在应该发生什么,我现在正试图从ccr社区存储库中获取opencv-qt-for-all包让程序自己处理这些问题,但我确定它不会解决我的问题]:

QT       += core
QT       -= gui

TARGET = FirstOpenCV
CONFIG   += console
CONFIG   -= app_bundle
CONFIG   += link_pkgconfig
PKGCONFIG += opencv

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += /usr/local/include/opencv2/

#LIBS += -L/usr/local/lib/ \
#-libopencv_core.so \
#-libopencv_highgui.so \
#-libopencv_imgproc.so \
#-libopencv_features2d \
#-libopencv_calib3d.so

LIBS += /usr/lib/libopencv_core.so \
/usr/lib/libopencv_highgui.so \
/usr/lib/libopencv_imgproc.so \
/usr/lib/libopencv_features2d.so \
/usr/lib/libopencv_calib3d.so \
/usr/lib/libavcodec.so

这是守则:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main() {

    // read an image
    Mat image = imread("002.jpg");
    // create image window named "My Image"
    namedWindow("My Image");
    // show the image on window
    imshow("My Image", image);
    // wait key for 5000 ms
    waitKey(5000);

    return 0;
}

4 个答案:

答案 0 :(得分:1)

尝试:

QT       += core

QT       -= gui

TARGET = FirstOpenCV
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += /usr/local/include/opencv2/

LIBS += -LC:/usr/local/lib/ \
-lopencv_core \
-lopencv_highgui \
-lopencv_imgproc \
-lopencv_features2d \
-lopencv_calib3d

答案 1 :(得分:0)

看来你的LIBS声明失败了。

你可以试试这个:

LIBS += -LC:/usr/local/lib/ \
    -libopencv_core.so.2.4.2 \
    -libopencv_highgui.so.2.4.2 \
    -libopencv_imgproc.so.2.4.2 \
    -libopencv_features2d.so.2.4.2 \
    -libopencv_calib3d.so.2.ss4.2

请注意行尾的反斜杠。如果没有这些,下一行将被解析为单独的声明,而“-libopencv_core.so.2.4.2”本身并不是有效的声明。

答案 2 :(得分:0)

我从来没有在Unix上看到过使用C:/:那么这可能是一个必要的修正(也是@enderland答案):

LIBS += -L/usr/local/lib/ \
-lopencv_core \
-lopencv_highgui \
-lopencv_imgproc \
-lopencv_features2d \
-lopencv_calib3d

升级到OpenCV 2.4.2时,我的系统出现问题 - 运行时绑定到与操作系统捆绑在一起的先前版本。我不得不(痛苦地)重新编译并重新安装OpenCV,并且我发现了一个很好的'技巧':使用pkgconfig而不是硬编码路径:

CONFIG += link_pkgconfig
PKGCONFIG += opencv

答案 3 :(得分:0)

问题解决了,正如我之前说过的,我的程序已执行,但是出现错误问题是图片目录,我把它放在main.cpp旁边的源文件中,问题是如果你想得到一个实际结果使用调试或发布模式你应该将图片放在这两个目录中然后再运行Make。

如果你愿意通过我使用的源文件所在的目录运行它,你应该打开一个终端,或者只是在你的Dolphin文件管理器或你使用的任何地方按F4然后先运行qmake然后调用make你很高兴,另一个问题是我的操作系统(脉轮)不会让挂载的设备具有可执行权限,所以你必须将你的项目移动到Home或者你喜欢的环境中你的OS。

已解决...... :) Tnx每一个:)