如何在Windows上静态链接到Qt中的libcUrl

How to statically link to libcUrl in Qt on Windows?

本文关键字:Qt 中的 libcUrl 链接 静态 Windows      更新时间:2023-10-16

我已经试着遵循我在网上能找到的所有指南,我非常接近,但被卡住了。项目构建并运行。然而,它立即崩溃。我使用Qt Creator 3.5.1Qt 5.5.1,编译器是MinGW 4.9.2 32 bit

我正在下载的cUrl库http://curl.haxx.se/download.html是Win32通用Win32 7zip 7.45.0 binary SSL SSH Viktor Szakáts

我在.pro文件中添加了卷曲头INCLUDEPATH += C:LibCcurl-7.45.0-win32-mingwinclude 的路径

我还右键单击了该项目,单击了"添加库",选择了"系统库",只选择了Windows并设置为静态链接,并添加了libcurl.alibcurldll.a,它们都放在编译器C:QtToolsmingw492_32lib的lib目录中。此步骤将win32: LIBS += -lcurlwin32: LIBS += -lcurldll添加到.pro文件中。

main.cpp:

#include "mainwindow.h"
#include <QApplication>
#include <curl/curl.h>
int main(int argc, char *argv[]) {
    CURLcode result = curl_global_init(CURL_GLOBAL_WIN32);
    QApplication a(argc, argv);
    MainWindow w;
    w.show();    
    auto retVal = a.exec();
    curl_global_cleanup();
    return retVal;
}

撞车的原因是什么?

注意:cUrl在任何代码中都没有其他用途(它只是一个裸露的应用程序)。

下载适用于Windows的curl(64位):

https://curl.haxx.se/windows/dl-7.72.0_5/curl-7.72.0_5-win64-mingw.zip

或者这是32位:

https://curl.haxx.se/windows/dl-7.72.0_5/curl-7.72.0_5-win32-mingw.zip

首先,您必须将curl中的文件夹放入qt中的文件夹中。

这些是:

"包括";,"lib";

转换为(我使用带有64位的5.14.2版本)

F:/Qt/5.14.2/mingw73_64/lib,F:/Qt/5.14.2/mingw73_64/include

然后转到项目中的.pr文件并添加以下行:

LIBS += -LF:/Qt/5.14.2/mingw73_64/lib -lcurl

注意,您必须将Path带到QT安装的lib目录。

现在您可以使用以下代码进行测试:

...
#include <curl/curl.h>
...
size_t WriteCallback(char *contents, size_t size, size_t nmemb, void *userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}
...
    CURL* easyhandle = curl_easy_init();
    std::string readBuffer;
    curl_easy_setopt(easyhandle, CURLOPT_URL, "https://example.com");
    curl_easy_setopt(easyhandle, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &readBuffer);
    curl_easy_perform(easyhandle);
...

在这里,您可以从curl请求(example.com)获得http响应。