Qt 编译动态库只生成dll没有lib文件

背景描述:

库A开发最初是以静态库形式存在,随着时间推移项目功能逐渐增多,涉及库A的内容也增多。组内成员开发各有习惯,QtCreator和VS2015未作限制。

现象:

  1. VS2015编辑器下正常编译和使用,使用QtCreator进行库A编译时发现无法编译成功,错误信息Lnk2019;
  2. 主动修改库A为动态库(.pro文件去除CONFIG += staticlib),只生成dll而无lib文件;

现象a原因和解决方案:

原因:库A部分组件加载时涉及C++和C底层库,VS编译时可由VS编译环境完成查找和链接,Qtcreator编译则缺少对应链接信息,导致报错Lnk2019;

解决方案:找到对应链接库,写入到.pro文件链接路径即可;

现象b原因和解决方案:

原因:动态库导出需要包含dllexport信息,静态编译时此部分直接忽略,转动态库时完全忘记还有此项内容。。。。

解决方案:如下添加动态链接信息即可; 

#ifdef WIN32
    #ifdef MYLIBRARY_EXPORT_DEF
        #define MYLIBRARY_EXPORT __declspec(dllexport)
    #else
        #define MYLIBRARY_EXPORT __declspec(dllimport)
    #endif
#else
    #define MYLIBRARY_EXPORT
#endif

#ifdef WIN32
    #ifdef MYLIBRARY_API_DEF
        #define MYLIBRARY_API __declspec(dllexport)
    #else
        #define MYLIBRARY_API __declspec(dllimport)
    #endif
#else
    #define MYLIBRARY_API
#endif

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值