64 位服务器下的 OpenSSL 问题和同一 32 位服务器下的 none(QT 应用程序)

OpenSSL issue under 64bit server and none under same 32bit (QT app)

将 QT 从 4.8.5 升级到 5.4.0 后,我们在服务器端遇到了问题。 构建是在 Debian wheezy(64 位)下完成的,也在 32 位机器上完成。 当我们在 32 位机器上启动服务器时,使用命令 openssl s_client -connect xxx.xxx.xxx.xxx:4443 我们会收到带有证书的答案,但在 64 位机器下什么也没有发生,只说明 "CONNECTED" . 两台机器都安装了openssl 1.0.0e版本,QT是使用web安装器安装的(直接复制需要的对象,所以没有在机器上编译)。

另一件事,在尝试在 windows7 下启动服务器时,它正在加载所需的 openssl dll(32 位)并且可以正常工作。

我是不是漏掉了什么?

P.S。此外,QT 示例在 64 位 linux 机器(sslechoserver 和 sslechoclient)

上编译时未连接

在 QTcpServer::incomingConnection 中发现了问题。 在 QT5.4 上使用 qintptr 作为 socketDescriptor。 此类型保证与所有指针的大小相同 Qt 支持的平台。在具有 32 位指针的系统上,qintptr 是 qint32 的类型定义;在具有 64 位指针的系统上,qintptr 是一个 qint64 的类型定义。

这就是为什么它在 32 位机器上工作而不在 64 位机器上工作的原因。 (纯运气)