- 主题:Qt5.6.3 xp下只要接入日志库就崩。。。
[d:\qt5\qtbase\src\corelib\global\qlogging.cpp @ 790]
0012f91c 00deb02a Qt5Cored!qt_assert+0x53
看这个文件的790行assert啥失败了呗。
【 在 cn62 (cn62) 的大作中提到: 】
: 搞了个windbg上去远程调试了下,抓到调用栈。
: 程序已经是极简了,见附件dapp。
: qt是我自己编译的:
: ...................
--
FROM 114.84.103.*
不用LoadLibrary,直接动态链接试试。
【 在 cn62 (cn62) 的大作中提到: 】
: spdlog加上SPDLOG_NO_TLS就可以了。
: 就是说TLS废掉了,应用的代码都不能用TLS。
--
FROM 114.84.103.*
你用depends之类的工具看看exe是否直接依赖那个dll。是的话tls应该没问题的。
【 在 cn62 (cn62) 的大作中提到: 】
: spdlog我没用dll,直接包含的header only文件。
: qt的库也不可能用LoadLibrary。
--
FROM 114.84.103.*
不是。和vc2017没关系。和qt有部分关系。
原因是windows xp的LoadLibrary不会正确处理TLS entry,会导致threadlocal数据未初始化。qt一定要用tls,就会在xp上引起bad access。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 估计是 vc2017 哪里有问题。查了一下 qt 5.6 是 2016 年发布的,那会儿没对 vc2017 仔细测试过吧。
--
FROM 114.84.103.*
那个spdlog没有用dll么?你从path里把dll去掉还能正常运行?
【 在 cn62 (cn62) 的大作中提到: 】
: 我还是没太明白,现在是应用代码用了TLS,而且没用dll。
: 搜了下,没发现qwindows.dll代码有用到TLS。
: 而且为什么是atomic受到影响?它是放在TLS的?
: ...................
--
FROM 114.84.103.*