如何在Windows上静态链接到Qt中的libcUrl
How to statically link to libcUrl in Qt on Windows?
我已经试着遵循我在网上能找到的所有指南,我非常接近,但被卡住了。项目构建并运行。然而,它立即崩溃。我使用Qt Creator 3.5.1
和Qt 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.a
和libcurldll.a
,它们都放在编译器C:QtToolsmingw492_32lib
的lib目录中。此步骤将win32: LIBS += -lcurl
和win32: 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响应。
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 以在Qt中的IF语句中设置时间延迟
- 如何在QT中的自定义视频小工具t上绘制矩形
- Qt中的实现指针(PIMPL)
- Qt中的RGB图像处理
- 如何识别项目是 QT 中的文件还是文件夹
- 如何将 json 数据附加到 Qt 中的现有 json 文件中
- 通过 Qt 中的线程调用 Rust 库
- Qt中的包装连接方法隐藏了编译器所需的信息
- Qt 中的去抖动事件过滤器
- 在QT中的两个窗口之间共享websocket连接
- 如何使用Qt中的QGeopath清除Mappolyline
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- 如何从qt中的类中调用方法
- 内联在对always_inline的调用中失败,Qt中的目标特定选项不匹配
- 项目错误:QT中的未知模块:Mac上的图表
- Qt中的QFile::copy(source,dest)的实现有时是错误的吗?
- 是否可以将文件路径传递给Qt中的setStyleSheet()
- 如何使用 qt 中的信号槽控制函数的返回
- 从 Qt 中的信号调用成员函数的问题