您的位置:首页 > 编程语言 > Qt开发

QT中DLL的生成和调用(查了些资料在同事的帮助下完成)

2011-09-14 11:49 453 查看
1)打开QT,File->New File or Project...,然后选择C++ Library,

Type :Shared library

Name:mydll

2)下一步:默认的有QtCore,为了方便调试,我们加上QtTest,然后一直默认到完成。本来是三个文件,我直接弄成两个mydll.h和mydll.cpp(一切为了方便);

i)mydll.h内容为:

#ifndef MYDLL_H

#define MYDLL_H

#include<QtCore/QDebug>

#include <QtCore/qglobal.h>

#if defined(MYDLL_LIBRARY)

# define MYDLLSHARED_EXPORT Q_DECL_EXPORT

#else

# define MYDLLSHARED_EXPORT Q_DECL_IMPORT

#endif

class MYDLLSHARED_EXPORT Mydll

{

public:

Mydll();

void Show();

};

#endif // MYDLL_H

i)mydll.cpp内容为:

#include "mydll.h"

Mydll::Mydll()

{

}

void Mydll::Show()

{

qDebug("fdsa");

}

3)完成上面的H文件和CPP文件编写后,再来个Ctrl + Shift + B,查看Debug文件夹里边有没有mydll.dll和libmydll.a(这个我们不用)。

4)下面进行对上面生成的mydll.dll进行调用。

i)新建一个工程,在工程中新建一个CPP文件,命名为:test.cpp,还记得要把上面生成的mydll.dll和mydll.h要拷到这个main.cpp所在的目录。

内容如下:

#include "mydll.h"

#include <QApplication>

int main(int argc,char *argv[])

{

QApplication app(argc,argv);

Mydll mydll;

mydll.Show();

return app.exec();

}

test.pro内容如下:

TARGET = test

SOURCES += main.cpp

HEADERS += mydll.h

LIBS += mydll.dll

结果就不说了,正常情况是能显示的。

我在编译生成和调用过程中碰到一个问题,就是生成的mydll.dll没有招报任何错误,在调用的时候也没有报任何错误,最后是在调试的时候才发现是缺少一些库文件,比如:QtCore4.dll、QtGui4.dll、(当然的调试的时候还要用到QtCored4.dll、QtGuid4.dll)

还有一个问题就是关于QT中*.dll的调试步骤为(假定调用mydll.dll的程序为test.exe):

i)首先打开Qt,Debug->Start Debugging->Start and Debug External Application... 然后在Executable中找到test.exe并确定。

ii)可以先打开建立mydll的工程。在调试前可以对mydll的程序打断点。在调试中gdb.exe这个进程可能会对调试有一定的影响,在调试前如果此进程没关,那必须先关,才能调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: