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这个进程可能会对调试有一定的影响,在调试前如果此进程没关,那必须先关,才能调试。
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这个进程可能会对调试有一定的影响,在调试前如果此进程没关,那必须先关,才能调试。
相关文章推荐
- QT生成DLL,调用DLL
- MFC调用Qt生成的dll
- VC生成的DLL给QT的EXE调用时lib路径问题小结
- QT生成DLL,调用DLL
- QT 生成DLL并显示调用
- QT生成DLL,调用DLL
- Qt调用VS生成的dll
- 怎么在qt中调用vs中生成的dll
- Qt调用qt生成的dll 显式和隐式(静态动态)
- QT生成DLL,调用DLL
- windows 下Qt调用Qt生成的dll
- 用Qt生成dll类库及调用方法
- 用Qt生成dll类库及调用方法
- QT生成DLL并调用DLL
- VC生成的DLL给QT的EXE调用时lib路径问题小结
- 在VC中调用fortran生成的dll
- C语言生成DLL供C#调用
- QT生成dll和lib
- Qt调用DLL动态库接口函数程序崩掉
- Qt调用VC++生成的动态链接库