Win7下,用QT5编写动态库,使用动态库时程序出现异常结束

用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

而且在win7上,斜杠和反斜杠都可以,不区分。

展开阅读全文

没有更多推荐了,返回首页