解决qt5.12.3进行https网络请求的代码打包exe发送给别人后无法请求网络的问题

2024年1月12日 15:41 ry 458

上个星期,我开发了一个软件,准备发布售卖,发现个别用户运行我的软件实现激活码验证时无法进行请求,而个别的又可以,刚开始我以为是我打包的问题,后面我想了个办法来获取exe软件的日志输出,由于我目前只有一台电脑,因此打包的exe在我的电脑上运行正常是应该的,而我不可能额把源码暴露给客户,因为我的软件本来就是加密的,需要激活码来激活的,因此决定利用qt的日志,即实现把源码的qdebug或者其他方式的打印信息全部写入日志中,如图所示

即把程序运行过程中的任何输出都写入到app_log.txt中,main.cpp的源码如下所示

#include "widget.h"
#include<QDateTime>
#include <QApplication>
// 声明自定义消息处理函数
void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    // 定义日志文件路径
      QString logFilePath = "app_log.txt";

      // 打开日志文件,以追加方式写入
      QFile logFile(logFilePath);
      if (logFile.open(QIODevice::Append | QIODevice::Text)) {
        QTextStream stream(&logFile);

        // 根据消息类型写入相应前缀
        switch (type) {
        case QtDebugMsg:
          stream << "[Debug] ";
          break;
        case QtInfoMsg:
          stream << "[Info] ";
          break;
        case QtWarningMsg:
          stream << "[Warning] ";
          break;
        case QtCriticalMsg:
          stream << "[Critical] ";
          break;
        case QtFatalMsg:
          stream << "[Fatal] ";
          break;
        }

        // 写入消息内容和额外信息
        stream << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") << " ";
        stream << context.file << ":" << context.line << " - " << context.function << " - " << msg << endl;

        // 关闭日志文件
        logFile.close();
      }
}
int main(int argc, char *argv[])
{
    qInstallMessageHandler(customMessageHandler);
    QApplication a(argc, argv);
    Widget w;
    w.show();
    qRegisterMetaType<QList<QStringList>>("QList<QStringList>");
    qRegisterMetaType<Qt::SortOrder>("Qt::SortOrder");


    return a.exec();
}

然后重新将代码打包成exe,再次发布给客户,然后远程客户运行exe,查看app_log.txt中的输出,发现是无法进行https请求的错误,然后打印下

qDebug() << QSslSocket::sslLibraryBuildVersionString();

需要的版本,我需要的是"OpenSSL 1.1.1b 26 Feb 2019"版本,我们先下载openssl,网址如下:https://slproweb.com/products/Win32OpenSSL.html   然后滑倒底部,找到对应版本,我的电脑是64位的,直接下载,如图所示

安装后,找到安装目录下的这2个文件

然后复制这2个文件到你打包exe的那个文件夹中就行,在打包发给客户,问题解决!

 

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
暂时还没有任何评论哦...

赣ICP备2021001574号-1

赣公网安备 36092402000079号