【转】用Qt生成dll类库及调用方法
?
转载:http://blog.sina.com.cn/s/blog_6a961ad40100kiey.html
?
.NET2005:
空白工程新建DLL后,将DLL和LIB文件放入需要调用的“指定目录”
?
项目-》属性->连接器-》常规-》附加库目录->添加“指定目录”
?
项目-》属性->连接器-》输入-》附加依赖项->添加“LIB文件”
?
添加头文件到项目中,则DLL可用!
?
?
VC6.0:
使一个项目编译生成DLL库而不生成可执行文件:
?
删除main()方法;?
将.pro项目文件中的TEMPLATE = app改为TEMPLATE = lib。
?
然后编译,此时生成的就是.a和.dll的文件。
?
在另一个项目中调用此DLL:
?
在项目文件中添加LIB。如添加此行:LIBS += "D:\workspace\MRP_Common\debug\common.dll" (common.dll既是上面生成的DLL);?
复制dll中类或方法的头文件到该项目中,并在要调用common.dll中类或方法的文件上面include;?
make,在debug目录中生成可执行文件,然后将dll复制到debug中,运行。
?
?
?
例子:
?
??
?
?
########################### 使用DLL的工程: #######################pro文件中加入: LIBS += "DllTest.dll"########################### 测试.cpp文件 ########################include "dlltest.h"#include <QLibrary>#include <qDebug>#include <QApplication>typedef int (*AddFunc)(int, int);typedef DllTest* (*GetFunc)();int main(int argc, char* argv[]) { QApplication app(argc, argv, false); QLibrary lib("DllTest"); if (lib.load()) { qDebug() << "Load dll successfully."; AddFunc func = (AddFunc)lib.resolve("add"); if (func) { qDebug() << func(1, 3); } GetFunc g = (GetFunc)lib.resolve("getDllTest"); if (g) { DllTest *t = g(); // 使用DLL中的类 qDebug() << t->getAge(); delete t; } } else { qDebug() << "Load dll Failed"; } return app.exec();}