小编Ste*_*eng的帖子

如何使用QTCreator中的mingw在多个核心上进行编译

我的Windows桌面上有一个四核i7 CPU.我试图让mingw32-make使用尽可能多的内核进行编译.我已将-j8添加到Build Settings-> Build Steps下的"Make Arguments"字段中.mingw32-make似乎完全忽略了该选项,因为我没有从中获得任何速度提升.当我查看任务管理器中的CPU使用率时,它保持在13%,我只看到一个运行g ++的实例.

现在,使用mingw重建整个项目需要3分钟.使用MSVC重建它只需要15秒.

为了您的信息,我在项目设置中启用了预编译的标题选项.这也使VC的事情变得更快.但我仍然没有看到预编译头与mingw的好处.

如果你有从MTCreator并行编译多个源文件的话,请分享你的意见.谢谢!

qt qt-creator mingw32

22
推荐指数
2
解决办法
2万
查看次数

使用嵌入的私有类重写Qt类

在许多情况下,我想覆盖Qt类来扩展或修改它的行为.但是几乎所有Qt类都使用QNetworkDiskCache中的内部私有类,如QNetworkDiskCachePrivate.我知道这种方法有优点.但私人阶层存在一个巨大的问题:它使得超越班级变得更加困难.对于带有源代码的其他C++类库,我通常会覆盖一个类方法,从父类的实现中复制代码,并在此处进行小的修改以实现我想要的行为.但是,在Qt中,私有类不会导出,并且对派生类不可见.由于Qt类通过"d"成员维护私有类中的关键内部数据,因此私有内部类的不可见性使得行为扩展的可能性非常有限.您只能使用少数暴露的公共方法.

我尝试提取类的整个源文件并重命名类名和文件名.但Qt类库交织在一起,以至于在大多数情况下从中提取单个类也很混乱.

我在这里想念一下吗?或者Qt类在可扩展性方面真的很糟糕?

c++ qt

7
推荐指数
1
解决办法
2302
查看次数

替代GDI +

我喜欢GDI +因为它的高性能而且它包含在Windows XP中.但是,它的模糊类和效果类仅适用于GDI + 1.1,后者仅适用于Windows Vista或更高版本.尽管微软计划很快放弃对Windows XP的支持,但仍然有很大一部分人仍然坚持使用XP.如果您制作任何面向消费者的软件,则必须支持Windows XP.但不幸的是,GDI + 1.1在XP下不可再分发.

我尝试了几个开源图像库.然而,当谈到性能时,例如高斯模糊操作,它们明显慢于gdi +.

任何人都可以推荐更好的替代GDI + XP支持吗?

gdi+

7
推荐指数
1
解决办法
5187
查看次数

hotmail.com上的QT ssl错误:无法找到本地查找证书的颁发者证书

当我使用QtWebkit(内部使用QSslSocket)连接到www.hotmail.com时,登录后出现以下ssl错误:

  1. 无法找到本地查找证书的颁发者证书
  2. 为此,不信任根CA证书
  3. 没有证明可以验证.

登录前我可以在mail.yahoo.com上遇到相同的错误.我发现与这两个服务器的安全连接会触发ssl错误:

  1. https://gfx8.hotmail.com
  2. https://csc.beap.bc.yahoo.com

QT附带了一个名为securesocketclient的小型ssl演示程序.如果我使用这个小客户端连接到上述两个服务器的端口443,我可以产生相同的错误.我99%肯定这是QT的一个错误,因为我们在许多开发系统上产生了这个问题.它会影响linux,mac和windows QT.它影响QT 4.7.4一直到QT 4.8.4(没有尝试早期版本).使用openssl 0.9.8复制该错误.

有些人可能错误地声称使用带有预编译QT二进制文件的openssl 1.0.0修复了该错误.这是错误的,因为预编译的QT二进制文件是使用openssl 0.9.8头文件编译的.Openssl 0.9.8与openssl 1.0.0不是二进制兼容的.如果使用一个版本的openssl编译QT但使用另一个版本的openssl二进制文件,一些结构成员将被误解.我做了很多步骤和跟踪到QT和openssl源代码来得出这个结论.

由于hotmail和yahoo电子邮件是非常受欢迎的网站,我认为这个bug在QT的安全性方面是一个严重的错误.我已经将它报告给QT bug系统(https://bugreports.qt.io/browse/QTBUG-23625),我怀疑digia是否会根据我过去的经验得到它.

请随时分享您对如何解决此错误的看法.我知道如何调用ignoreSslErrors并假装没有问题.但这并不是打算如何使用openssl.


有关此问题的进一步调查的一些更新.

https://gfx8.hotmail.com的证书路径是:

  • 根CA:Versign Class 3公共主要证书颁发机构 - G5
  • 中级CA:Versign Class 3扩展验证SSL SGC CA.
  • 服务器证书:gfx-ecn.hotmail.com

根CA确实位于Windows证书存储区中,并在启动时正确加载.我想也许不知何故QT没有获得中间证书.我使用openssl命令行程序运行测试,如下所示:

openssl s_client -showcerts -connect gfx8.hotmail.com:443

输出在这里:

CONNECTED(000001AC)depth = 0 1.3.6.1.4.1.311.60.2.1.3 = US,1.3.6.1.4.1.311.60.2.1.2 = Washington,bu sinessCategory = Private Organization,serialNumber = 600413485,C = US,postalC ode = 98052,ST = Washington,L = Redmond,street = 1 Microsoft Way,O = Microso ft Corporation,OU = Windows Azure CDN,CN = gfx-ecn.hotmail.com …

ssl qt openssl qtwebkit

6
推荐指数
1
解决办法
9128
查看次数

当我使用没有美元符号的变量名时,PHP不会给我错误

我在php网页中有以下代码:

  if (bInserted) echo "abc";
Run Code Online (Sandbox Code Playgroud)

我希望PHP给我一个语法错误,因为我忘了在变量名之前添加美元符号.但是,该页面不会产生任何错误.相反,它甚至回应了"abc"字符串.我真的不能理解这一点.

php

1
推荐指数
1
解决办法
115
查看次数

标签 统计

qt ×3

c++ ×1

gdi+ ×1

mingw32 ×1

openssl ×1

php ×1

qt-creator ×1

qtwebkit ×1

ssl ×1