aggregate ‘QSslConfiguration conf‘ has incomplete type and cannot be defined

3 篇文章 0 订阅
1 篇文章 0 订阅

用Qt进行网络开发,所以程序中包含了network模块,但编译Qt程序时报错aggregate 'QSslConfiguration conf' has incomplete type and cannot be defined,报错截图如下

在这里插入图片描述

QSslConfiguration类是Qt框架中用于SSL配置的一部分,报错表示编译器没有找到 QSslConfiguration的完整定义,需要对以下几方面进行检查

  • 编译环境中需要包含Qt的ssl模块的正确头文件
  • 配置文件(.pro或CMakeLists.txt)需要包含ssl模块
// pro文件
QT += core network ssl crypto

// CMakeLists.txt
find_package(Qt5 COMPONENTS Network REQUIRED)
include_directories(${Qt5Network_INCLUDE_DIRS})
// Program是进程名称
target_link_libraries(Program Qt5::Network ssl crypto)
  • 代码中头文件必须包含
// 有上述报错时必须检查是否包含此头文件
#include <QSslConfiguration>
// 其他相关头文件
#include <QtNetwork>
#include <QSslSocket>
#include <QNetworkReply>
#include <QNetworkRequest>

如果以上几项配置都正确的话,清理并重新构建项目,但还是有同样的报错的话,可以尝试以下方法

我是在本地通过编译Qt源码来搭建Qt环境的,查询发现Qt-5.6.0的qnetworkrequest.h源文件有以下的宏定义,所以是在编译Qt源码时未支持openssl,Qt环境和openssl环境有个先后顺序,需要先编译openssl环境,再进行Qt源码的./configure,否则在进行Qt源码配置的时候,不会支持ssl,也就没办法进行网络相关的开发,这种情况应该比较少见,所以仅做参考。openssl可以通过apt-get安装,也可以下载源码编译

#ifndef QT_NO_SSL
QSslConfiguration sslConfiguration() const;
void setSslConfiguration(const QSslConfiguration &configuration);
#endif
# 安装openssl环境和头文件及静态库,openssl环境搭建后再进行Qt源码编译
# Ubuntu
sudo apt-get install openssl
sudo apt-get install openssl-devel

# CentOS
sudo yum -y install openssl
sudo yum -y install openssl-devel

Qt源码openssl源码,点击跳转下载,我用的版本是openssl-1.0.2eQt-5.6.0

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值