用Qt5编写动态库,跟别写一般工程步骤类似,区别就是(1)建工程时候选择library类别 (2)编译和执行用的是qmake和构建。
QT5编写动态库
1、如下图:依次点击 New Project -> Library -> C++库 -> Choose
2、进入如下界面: 选择“共享库” ,填写库名“ffku”,修改路径“D:\123” -> 点击“下一步”
3、进入如下界面:继续“下一步”
4、进入如下界面:选择需要的模块,继续“下一步”
5、进入如下界面:这些都是自动生成的,看一眼继续“下一步”
6、进入如下界面:问是否加入版本控制,暂时不用版本控制。点击“完成”
7、进入到工程:跟编写其他工程一样,把头文件信息放到“ffku.h”里,把具体实现放到“ffku.cpp”里,"ffku_global.h"头文件不需要改动。
8、编写好后,右击项目名称 -> 执行qmake -> 构建,此时就可以去路径D:\123\build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug\debug下找库了。
其中,ffku.dll就是动态库,其他两个可以删除。
Qt5使用动态库
1、新建一个测试工程:
在.pro文件里添加:
INCLUDEPATH += D:/123/ffku
LIBS += -LD:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/ -lffku
2、在.h文件里添加:
#include "ffku.h"
3、定义一个实体
Ffku kk;这里:生成的库名的首字母会自动变为大写字母。
4、使用ffku库,比如库里有函数error(),功能就是打印一条信息“i am the library”,
在.cpp文件里:kk.error();
执行程序,输出“i am the library”,表示库的编写和使用正确。
我遇到的问题:
曾经我在linux上用Qt编写过动态库。跟上面过程一样,唯一区别就是,
linux上:
INCLUDEPATH += D:/123/ffku
LIBS += D:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/libffku.so
所以,Win7上,我也按上述格式添加:
INCLUDEPATH += D:/123/ffku
LIBS += D:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/ffku.dll
结果,程序总是异常退出。纳闷了许久,才发现,win7上用Qt,跟linux上用Qt的格式还是有区别的。
linux上:两者都行
INCLUDEPATH += D:/123/ffku
LIBS += -LD:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/ -lffku
INCLUDEPATH += D:/123/ffku
LIBS += D:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/libffku.so
Win7上:貌似只能这么写
INCLUDEPATH += D:/123/ffku
LIBS += -LD:/123/build-ffku-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/ -lffku