让 cURL 与 Visual Studios 2017 一起工作
Getting cURL to work with Visual Studios 2017
*编辑:我按照这些步骤在 VS 2017 中使用 CURL 在 64 位机器上工作(原始问题见下文):
首先安装vcpkg:
- 使用 gitbash 克隆 vcpkg 到
C:\Program Files
- 在命令提示符下导航到
C:\Program Files\vcpkg
- 运行 在命令提示符中:
.\bootstrap-vcpkg.bat
- 运行 在命令提示符中:
vcpkg integrate install
然后使用vcpkg和Visual Studios 2017命令提示符安装cURL:
- 打开
VS 2017 Command prompt
并导航到 vcpkg 文件夹(vcpkg.exe
所在的文件夹)
运行:vcpkg install curl[*]:x64-windows
(请注意,这可能需要大约半小时的下载时间 运行,如果它看起来像 [=,请不要担心 "stuck"部分)。
*编辑:之前我的说明是 运行 vcpkg install curl:x64-windows
但我在 @i7clock 的要求下添加了 [*]
以启用 sftp 和 scp 协议。
完成此步骤后,您应该检查以确保 curl 安装正确。为此,您应该在 VS 2017 中创建一个新项目并尝试包含 #include curl/curl.h
而不添加任何其他包含目录。如果您不能这样做,那么您的 curl 安装出了问题。在可以包含 curl/curl.h
.
之前,您应该删除 curl(甚至可能是 vcpkg 文件夹并进行全新安装)
*重要说明:这仅在您在 x64 中使用 x64 debugger/compiling 时有效!如果您不能包含 curl 目录,请检查以确保您的调试设置为 Windows.
的正确版本
您可能还需要禁用 SSL 对等验证:
- 将代码
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
放在请求之前(见下文)。请注意,这只是必要的,因为我不知道如何获得证书以使用 curl。我有一个关于这个问题 here. 的尚未回答的 Whosebug post
这里有一些您可能需要尝试获取东西的其他步骤 运行ning,但我最终发现它们不是必需的:
- 导航到 vcpkg\packages\curl_x64-windows\lib 找到 libcurl.lib 文件。
- 在 Properties -> Linker
下的 Additional Library Directories 中包含指向 libcurl.lib 的路径
- 在链接器 -> 输入 -> 附加依赖项下的附加依赖项中包含 libcurl.lib
- 在属性 -> C/C++ -> 预处理器 -> 预处理器定义中放置
CURL_STATICLIB
这是我现在的工作代码:
#include "curl/curl.h"
void testCurl() {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
#ifdef SKIP_PEER_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
#endif
#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}
int main(){
testCurl();
return 0;
}
*编辑:这是我的老问题在修复之前的其余解释:
我正在尝试使用 cURL 进行 API 调用,以便我可以开始获取实时股票数据,但我 运行 遇到了让它在 VS 2017 中运行的困难。我已尝试使用以下步骤 install using vcpckg:
根据 vcpkg 文档,我现在应该可以简单地 #include ,但它找不到文件夹。如果我尝试从 vcpkg\packages\curl_x86\include 和 #include 中包含 "include" 目录,我就可以构建我的项目。我也可以访问某些 类,但如果我尝试设置 curl_global_init(CURL_GLOBAL_DEFAULT),如本例所示,我会收到链接器错误。
您已经使用 vcpkg 安装了 x86 版本的 curl(即 vcpkg\packages\curl_x86\include
中的 x86)。您需要安装 x64 版本以匹配您的项目:
>vcpkg install curl:x64-windows
这里是 2021 年 windows 10,使用当前的 Visual Studio。 vcpkg install curl[*]:x64-windows
不起作用。我收到 BUILD_FAILED 错误。 vcpkg install curl
对我有用,只需要 ~30 秒
*编辑:我按照这些步骤在 VS 2017 中使用 CURL 在 64 位机器上工作(原始问题见下文):
首先安装vcpkg:
- 使用 gitbash 克隆 vcpkg 到
C:\Program Files
- 在命令提示符下导航到
C:\Program Files\vcpkg
- 运行 在命令提示符中:
.\bootstrap-vcpkg.bat
- 运行 在命令提示符中:
vcpkg integrate install
然后使用vcpkg和Visual Studios 2017命令提示符安装cURL:
- 打开
VS 2017 Command prompt
并导航到 vcpkg 文件夹(vcpkg.exe
所在的文件夹) 运行:
vcpkg install curl[*]:x64-windows
(请注意,这可能需要大约半小时的下载时间 运行,如果它看起来像 [=,请不要担心 "stuck"部分)。*编辑:之前我的说明是 运行
vcpkg install curl:x64-windows
但我在 @i7clock 的要求下添加了[*]
以启用 sftp 和 scp 协议。完成此步骤后,您应该检查以确保 curl 安装正确。为此,您应该在 VS 2017 中创建一个新项目并尝试包含
之前,您应该删除 curl(甚至可能是 vcpkg 文件夹并进行全新安装)#include curl/curl.h
而不添加任何其他包含目录。如果您不能这样做,那么您的 curl 安装出了问题。在可以包含curl/curl.h
.*重要说明:这仅在您在 x64 中使用 x64 debugger/compiling 时有效!如果您不能包含 curl 目录,请检查以确保您的调试设置为 Windows.
的正确版本
您可能还需要禁用 SSL 对等验证:
- 将代码
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
放在请求之前(见下文)。请注意,这只是必要的,因为我不知道如何获得证书以使用 curl。我有一个关于这个问题 here. 的尚未回答的 Whosebug post
这里有一些您可能需要尝试获取东西的其他步骤 运行ning,但我最终发现它们不是必需的:
- 导航到 vcpkg\packages\curl_x64-windows\lib 找到 libcurl.lib 文件。
- 在 Properties -> Linker 下的 Additional Library Directories 中包含指向 libcurl.lib 的路径
- 在链接器 -> 输入 -> 附加依赖项下的附加依赖项中包含 libcurl.lib
- 在属性 -> C/C++ -> 预处理器 -> 预处理器定义中放置
CURL_STATICLIB
这是我现在的工作代码:
#include "curl/curl.h"
void testCurl() {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
#ifdef SKIP_PEER_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
#endif
#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}
int main(){
testCurl();
return 0;
}
*编辑:这是我的老问题在修复之前的其余解释:
我正在尝试使用 cURL 进行 API 调用,以便我可以开始获取实时股票数据,但我 运行 遇到了让它在 VS 2017 中运行的困难。我已尝试使用以下步骤 install using vcpckg:
根据 vcpkg 文档,我现在应该可以简单地 #include ,但它找不到文件夹。如果我尝试从 vcpkg\packages\curl_x86\include 和 #include 中包含 "include" 目录,我就可以构建我的项目。我也可以访问某些 类,但如果我尝试设置 curl_global_init(CURL_GLOBAL_DEFAULT),如本例所示,我会收到链接器错误。
您已经使用 vcpkg 安装了 x86 版本的 curl(即 vcpkg\packages\curl_x86\include
中的 x86)。您需要安装 x64 版本以匹配您的项目:
>vcpkg install curl:x64-windows
这里是 2021 年 windows 10,使用当前的 Visual Studio。 vcpkg install curl[*]:x64-windows
不起作用。我收到 BUILD_FAILED 错误。 vcpkg install curl
对我有用,只需要 ~30 秒