問題描述
*按照以下步驟,我在 VS 2017 上的 VS 2017 中按照以下步驟運行了 CURL(原始問題見下文):
首先安裝 vcpkg:
- 使用 gitbash 將 vcpkg 克隆到
C:Program Files
莉> - 在命令提示符中導航到
C:Program Filesvcpkg
- 在命令提示符下運行:
.ootstrap-vcpkg.bat
- 在命令提示符下運行:
vcpkg集成安裝
然后使用 vcpkg 和 Visual Studios 2017 命令提示符安裝 cURL:
- 打開
VS 2017 命令提示符
并導航到 vcpkg 文件夾(vcpkg.exe
所在的位置) 運行:
vcpkg install curl[*]:x64-windows
(注意這可能需要大約半小時來下載和運行,如果它看起來像卡在零件上).*以前我的指令說要運行
vcpkg install curl:x64-windows
但我在@i7clock 的要求下添加了[*]
以啟用 sftp和 scp 協議.在這一步之后,您應該檢查以確保 curl 安裝正確.為此,您應該在 VS 2017 中創建一個新項目并嘗試包含
#include curl/curl.h
而不添加任何其他包含目錄.如果您不能這樣做,那么您的 curl 安裝就會出現問題.您應該刪除 curl(甚至可能刪除 vcpkg 文件夾并進行全新安裝),直到您可以包含curl/curl.h
.*重要提示:這僅在您使用 x64 調試器/在 x64 中編譯時有效!如果您無法包含 curl 目錄,請檢查以確保您的調試設置為正確的 Windows 版本.
您可能還需要禁用 SSL 對等驗證:
- 將代碼
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
放在請求之前(見下文).請注意,這只是必要的,因為我無法弄清楚如何獲取證書以使用 curl.我有一個關于這個問題的迄今為止尚未回答的 stackoverflow 帖子 這里.
這里有一些其他步驟,您可能需要嘗試讓事情運行,但我最終發現它們沒有必要:
- 導航到 vcpkgpackagescurl_x64-windowslib 以找到 libcurl.lib 文件.
- 在屬性 -> 鏈接器下的附加庫目錄中包含 libcurl.lib 的路徑
- 在鏈接器下的附加依賴項中包含 libcurl.lib -> 輸入 -> 附加依賴項
- 將
CURL_STATICLIB
放在屬性 -> C/C++ -> 預處理器 -> 預處理器定義中
這是我現在的工作代碼:
#include "curl/curl.h"無效測試卷曲(){卷曲 *卷曲;CURLcode res;curl_global_init(CURL_GLOBAL_ALL);curl = curl_easy_init();如果(卷曲){curl_easy_setopt(卷曲,CURLOPT_SSL_VERIFYPEER,FALSE);curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");#ifdef SKIP_PEER_VERIFICATIONcurl_easy_setopt(卷曲,CURLOPT_SSL_VERIFYPEER,0L);#萬一#ifdef SKIP_HOSTNAME_VERIFICATIONcurl_easy_setopt(卷曲,CURLOPT_SSL_VERIFYHOST,0L);#萬一res = curl_easy_perform(curl);如果 (res != CURLE_OK)fprintf(stderr, "curl_easy_perform() 失敗:%s
",curl_easy_strerror(res));curl_easy_cleanup(卷曲);}curl_global_cleanup();}int main(){測試卷曲();返回0;}
*這是我的舊問題在修復之前的其余解釋:
我正在嘗試使用 cURL 進行 API 調用,以便我可以開始獲取實時股票數據,但我在 VS 2017 中遇到了困難.我嘗試了
您已經使用 vcpkg 安裝了 x86 版本的 curl(即 vcpkgpackagescurl_x86include
中的 x86).您需要安裝 x64 版本以匹配您的項目:
>vcpkg install curl:x64-windows
*Edit: I got CURL working in VS 2017 on a 64 bit machine following these steps (see below for original problem):
First install vcpkg:
- Clone vcpkg using gitbash into
C:Program Files
- In a command prompt navigate to
C:Program Filesvcpkg
- Run in the command prompt:
.ootstrap-vcpkg.bat
- Run in the command prompt:
vcpkg integrate install
Then use vcpkg and Visual Studios 2017 command prompt to install cURL:
- Open a
VS 2017 Command prompt
and navigate to the vcpkg folder (where thevcpkg.exe
is) Run:
vcpkg install curl[*]:x64-windows
(note this can take around a half hour to download and run, don't worry if it looks like it is "stuck" at parts).*Edit: previously my instructions said to run
vcpkg install curl:x64-windows
but I added on the[*]
at the behest of @i7clock to enable sftp and scp protocols.After this step, you should check to make sure that curl installed correctly. To do this you should create a new project in VS 2017 and try and include
#include curl/curl.h
without adding any additional include directories. If you cannot do this then something went wrong with your install of curl. You should remove curl (and perhaps even the vcpkg folder and do a clean install) until you can includecurl/curl.h
.*Important Note: this will only work if you are using x64 debugger/compiling in x64! If you cannot include the curl directory check to make sure your debug is set to the correct version of Windows.
You may need to disable SSL peer verification as well:
- Place the code
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
before the request (see below). Note this is only necessary because I could not figure how to get certificates to work with curl. I have an as-of-yet unanswered stackoverflow post regarding this problem here.
Here are some other steps you may need to try to get things running, but I ended up finding them not necessary:
- Navigate to vcpkgpackagescurl_x64-windowslib to find the libcurl.lib file.
- Include the path to libcurl.lib in Additional Library Directories under Properties -> Linker
- Included libcurl.lib in Additional Dependencies under Linker -> Input -> Additional Dependencies
- Place
CURL_STATICLIB
in Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
Here is my now working code:
#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
",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}
int main(){
testCurl();
return 0;
}
*Edit: Here is the rest of the explanation of my old problem before it was fixed:
I am trying to use cURL to make an API call so I can start getting real time stock data, but I am running into difficulties getting it to function in VS 2017. I have attempted an install using vcpckg using the following steps:
According to vcpkg documentation I should be able to now simply #include , but it can't find the folder. If I try including the "include" directory from vcpkgpackagescurl_x86include and #include I can build my project. I can also access some of the classes, but if I try and set the curl_global_init(CURL_GLOBAL_DEFAULT) as in this example I get linker errors.
You've installed the x86 version of curl with vcpkg (That's the x86 in vcpkgpackagescurl_x86include
). You need to install the x64 version to match your project:
>vcpkg install curl:x64-windows
這篇關于使 cURL 與 Visual Studios 2017 一起使用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!