【大型软件开发】浅谈大型Qt软件开发(四)动态链接库的宏冲突问题、COM组件开发的常见问题...

文章介绍了在对接链接库时遇到的三个主要问题:1)使用Q_OBJECT和Q_DECL_IMPORT宏导致的编译错误,原因是静态数据成员不能在dllimport类中定义;2)不同线程间的对象创建警告,可能由于工程和库的版本不匹配;3)不安全的单例模式在COM组件中的风险,并提出了使用QSharedPointer实现的安全单例模式。

最近工作的时候有一个链接库的对接工作,在对接时发生了一些小问题,这篇FAQ是办公室写这个库的工程师戴工写的,这里记录一下:

一、编译工程时报链接错误“不允许dllimport静态数据成员的定义”

1.错误截图

image

2.错误原因分析

此错误是Q_OBJECT和Q_DECL_IMPORT宏共同作用时产生的结果。查询微软文档可知:静态数据成员无法在定义dllimport类的同一程序中指定定义。

image

这句话表明,导出类时,其静态成员不可被外部覆盖定义。举个例子,有导出类如下:

image

其中宏定义为:image

根据微软关于dllimp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值