Qt编译自定义控件的静态库并在VS项目中使用,图文非常详细

1.生产并放置静态库文件

1.生成.lib文件

  1. 打开QtCreator,创建一个C++ Library项目
    在这里插入图片描述
  2. 确定好项目名称和路径,点击下一步
    在这里插入图片描述
  3. 选择构建系统之后点击下一步
    在这里插入图片描述
  4. 选择生成库的类型,我们编译静态库就选择Static…,类名就输入你的控件的名称(无关紧要)
    在这里插入图片描述
  5. 选择控件时就选择你控件支持的版本,为了库对不同环境支持更好可以都勾上,选择后点击下一步,再点击完成。
    在这里插入图片描述
  6. 创建好项目之后后附带头文件和源文件,可以把他Delete删除掉(因为一般是把写好的代码添加进项目而不是直接在这个项目里面写)
    在这里插入图片描述
  7. 然后把我们写好的代码的头文件和源文件复制到项目所在的目录
    在这里插入图片描述
  8. 右击,选择添加现有文件
    在这里插入图片描述
  9. 添加完之后你可能发现代码提示一些本来正确的include语句提示找不到文件,这是因为我们之前选择模块没选择到相应模块,需要修改pro文件
    在这里插入图片描述
  10. 配置好了就可以开始构建项目了。选择构建使用的套件和构建的版本。
    强调:这儿选择的构建版本很重要,一定要记住你此时构建的是Debug还是release,因为后面使用时如果版本不对则会报错,后文有报错的情况展示在这里插入图片描述
  11. 出现绿色就是编译完成了,我们可以在生成的构建文件夹里看见.lib文件
    在这里插入图片描述

2.将头文件和.lib文件添加到Qt套件的include目录和库文件目录中。

先找到include目录
例如:我生成的是Qt 5.14.2 msvc套件的Debug版本静态库,这个include目录就是Qt>5.14.2>msvc2017_64>include
在这里插入图片描述
然后把编译用到的头文件和生成的.lib静态库文件粘贴进去即可
在这里插入图片描述
这时生成的库文件的名称是刚才项目的名称,我们可以修改到和头文件一样的名称。


2.在VS中使用自定义的控件

  1. 首先创建好一个Qt项目(当然也可以是你自己已经写好的项目,此处我做测试),需要借助Qt VS Tools,此处不赘述。
    此时我就已经可以将模块中的头文件添加进项目,但还不够,我们还需要在项目设置中将头文件所在目录显式地告诉VS。
    在这里插入图片描述
    进入:项目–>属性–>C/C+±->常规–>附加包含目录,将刚才的自定义目录添加进去。
    注意:属性页面左上角有个配置,可以选择此时配置的是Debug还是Release,这个必须和刚才编译时的版本相同!!!
    在这里插入图片描述

  2. 此时VS还不知道库文件在哪,需要我们告诉他。进入:项目–>属性–>链接器–>常规–>附加库目录,添加我们刚才自定义的那个文件夹
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接着进入:输入一栏,把需要的库文件的名添加到“附加依赖库”中,然后点击确定
    在这里插入图片描述

  3. 到此为止,项目配置就完成了,我们可以像使用Qt自带的控件那样在项目中声明并使用控件了。

在这里插入图片描述
在这里插入图片描述

3. 报错的可能原因提示

按照上面的方法一步一步走是没有问题的,但是你可能会出现疏忽。

  • 报错1:error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”…
    原因:大概率是:编译库与VS运行的版本不匹配,例如你可能编译的Release,但是VS运行的项目是Debug,修改其中一个到匹配即可。如果无法解决可参看这篇博客
  • 报错2:无法解析的符号…
    原因:大概率是:你没有将头文件包含目录设置到项目的附加头文件目录一栏,前文提到过,可参看。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值