error: collect2: ld returned 1 exit status 请帮 我看看程序时哪里有问题

loveallsprings 2010-03-07 12:34:51
本人用qt creator 创建了一个gui application

MyTest.h


#ifndef MYTEST_H
#define MYTEST_H

#include <QtGui/QWidget>
#include <cv.h>
#include <QImage>
#include <QtCore>
#include <highgui.h>

class MyTest : public QWidget
{
Q_OBJECT

public:
MyTest(QWidget *parent = 0);
~MyTest();
void showImage(char *filename);
QImage& pConvQImage(IplImage *p,QImage &q);

private:
IplImage * pImage;
QImage qImage;
};

#endif // MYTEST_H




MyTest.cpp


#include "mytest.h"
#include <QPainter>

MyTest::MyTest(QWidget *parent)
: QWidget(parent)
{
this->showImage("lena.jpg");
}

MyTest::~MyTest()
{

}

void MyTest::showImage(char *filename)
{
pImage = cvLoadImage(filename,1);

QPainter q;
q.drawImage(this->rect(),pConvQImage(pImage,qImage));
}

QImage& MyTest::pConvQImage(IplImage *p, QImage &q)
{
q = QImage((const uchar*)p->imageData,p->width,p->height,p->widthStep,QImage::Format_RGB888);
return q;
}




main.cpp


#include <QtGui/QApplication>
#include "mytest.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyTest w;
w.show();
return a.exec();
}




test_OpenCV4.pro

TARGET = test_OpenCV4
TEMPLATE = app


SOURCES += main.cpp\
mytest.cpp

HEADERS += mytest.h

INCLUDEPATH += D:\OpenCV2.0\include\opencv \
LIBS \
+= \
D:\OpenCV2.0\lib




运行的时候就出现一个错误,但是找不到错误在哪里,请高手指点一二


D:/learning/workspace/test_OpenCV4/mytest.cpp:17: undefined reference to `cvLoadImage'

:-1: error: collect2: ld returned 1 exit status
...全文
2757 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
astair 2010-10-11
  • 打赏
  • 举报
回复
我也是同样的问题
loveallsprings 2010-03-07
  • 打赏
  • 举报
回复
最后还是修改的.pro文件


INCLUDEPATH += D:\OpenCV2.0\include\opencv
LIBS += D:\OpenCV2.0\lib\libcv200.dll.a\
D:\OpenCV2.0\lib\libcvaux200.dll.a \
D:\OpenCV2.0\lib\libcxcore200.dll.a \
D:\OpenCV2.0\lib\libcxts200.dll.a \
D:\OpenCV2.0\lib\libhighgui200.dll.a \
D:\OpenCV2.0\lib\libml200.dll.a


但曾几何时,这样写还会报错,难不成是此一时彼一时,不是很理解
loveallsprings 2010-03-07
  • 打赏
  • 举报
回复
现在把.pro文件中修改了下
现在只剩下一个问题了

pro的修改

INCLUDEPATH += D:\OpenCV2.0\include\opencv
LIBS += D:\OpenCV2.0\lib


但是现在还有救剩下一个最让人磋磨不透的那个问题
:-1: error: collect2: ld returned 1 exit status


我知道大家说的,出现这个问题可能有3种情况,但是我根本不知道如何去修改


dyw 2010-03-07
  • 打赏
  • 举报
回复
引用 6 楼 loveallsprings 的回复:
我将鼠标放在这个函数上的时候有显示这个函数的定义
...


这个只表明cv的头文件没问题了。库文件呢?就是cv库的.lib文件,在链接阶段需要。
试试你的.pro文件改为这样
win32 { // 仅win32下有效
INCLUDEPATH += D:\OpenCV2.0\include\opencv
LIBS += -LD:\OpenCV2.0\lib -l<cv库文件名>
}
loveallsprings 2010-03-07
  • 打赏
  • 举报
回复
引用 5 楼 dyw 的回复:
检查cv库是否链接了,及名称是否正确。


我将鼠标放在这个函数上的时候有显示这个函数的定义

然后,我还试过将这个highgui。h直接放在project下的header下,任然不行

如果是符号表找不到这个函数应该怎么办呢
dyw 2010-03-07
  • 打赏
  • 举报
回复
检查cv库是否链接了,及名称是否正确。
MicroSky2813 2010-03-07
  • 打赏
  • 举报
回复
引用 3 楼 loveallsprings 的回复:
引用 1 楼 killua_hzl 的回复:cvLoadImage这个没定义,也不知道哪里来的,LZ解释下,编译上是报这个错

这个是opencv库中的highgui。h头文件中的一个函数

问题是我已经将头文件include进来了

还是有这个问题

下面那个连接错误不重要,

出项连接错误可能
1.你没有结束之前的运行 ,比如在Qt Creator运行了一次,忘了关闭,然后再运行会出现
2.程序编译出错,然后无法连接
3.也有可能你是连接别处的,符号表里没找到cvLoadImage

我感觉3的可能性较大
loveallsprings 2010-03-07
  • 打赏
  • 举报
回复
引用 1 楼 killua_hzl 的回复:
cvLoadImage这个没定义,也不知道哪里来的,LZ解释下,编译上是报这个错


这个是opencv库中的highgui。h头文件中的一个函数

问题是我已经将头文件include进来了

还是有这个问题
MicroSky2813 2010-03-07
  • 打赏
  • 举报
回复
undefined reference to `cvLoadImage'

pImage = cvLoadImage(filename,1);

cvLoadImage从哪来的?
  • 打赏
  • 举报
回复
cvLoadImage这个没定义,也不知道哪里来的,LZ解释下,编译上是报这个错

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧