23.vs2015创建Qt界面动态库

趟了一个坑,记录一下

1 新建动态库

23.vs2015创建Qt界面动态库

23.vs2015创建Qt界面动态库

由于没有提示,将qt的include路径包含进来.

23.vs2015创建Qt界面动态库

创建界面类

创建ui类TestWidget对头文件进行修改

23.vs2015创建Qt界面动态库

编译生成动态库,此时没有任何毛病,问题出在调用ui动态库中

23.vs2015创建Qt界面动态库

调用动态库

新建调用工程. 结果出现以下错误,原因是不能将库的相关头文件添加到现有工程目录下,调式了好久,网上的方法都不可靠,后来发现原来是自己偷懒导致的,那么我们直接来看正确做法。

在使用一个继承自QObject带有Q_OBJECT宏的导出类时,编译报错:不允许 dllimport 静态数据成员 的定义。
原因是自动生成的moc文件带有静态函数,无法导出

23.vs2015创建Qt界面动态库

新建一个目录,将库的头文件与dll 拷贝进去。切记

23.vs2015创建Qt界面动态库
23.vs2015创建Qt界面动态库

对LibTest 工程进行按照我们添加第3方,正规库的方法来进行添加

23.vs2015创建Qt界面动态库
23.vs2015创建Qt界面动态库
23.vs2015创建Qt界面动态库

修改一下,书写错误,那就将错就错,改为 WigetLib.lib

修改源码,调用库

23.vs2015创建Qt界面动态库
23.vs2015创建Qt界面动态库

运行结果

23.vs2015创建Qt界面动态库