Visualstudio 19 libcurlバージョン


libcurl


サーバに接続するため、libcurlをVisual studio 19で使用する必要があります.
visualstudio 19では、バージョン互換性の問題でlibcurlのc++での使用時間が長いため、構築に失敗した.
最終的には成功しましたが、他の人たちは苦労しないように21年11月基準バージョンを書きました.
libcurlを構築する前に、3つのプログラムが必要です.
1. Perl
2. nasm
3. openssl

perl


Opensslを構築するにはperlが必要です.
perlはhttps://strawberryperl.com/リンクから受信される.

64ビットバージョンを受信すればいいです.

nasm


NASMは一部のコンポーネントを使用して暗号化性能を向上させる.
https://www.nasm.us/
nasmを環境変数にダウンロードして追加します.

openssl


Opensslはgithubで安定バージョン1.1.1 lをクローンします.

Opensslを構築するには、管理者権限でvisualstudioコマンドプロンプトを実行します.

x 86は32ビット、x 64は64ビットなので、64ビットで開きます.
クローンディレクトリに入って静的構築構成を行います.
1. x86 static library
perl Configure VC-WIN32 --openssldir=C:\OpenSSL-x86 no-shared no-asm threads no-idea no-mdc2 no-rc5
2. x86 static debug library
perl Configure debug-VC-WIN32 --openssldir=C:\OpenSSL-x86-debug no-shared no-asm threads no-idea no-mdc2 no-rc5

  • x64 static library
    perl Configure VC-WIN64A --openssldir=C:\OpenSSL-x64 no-shared no-asm threads no-idea no-mdc2 no-rc5

  • x64 static debug library
    perl Configure debug-VC-WIN64A --openssldir=C:\OpenSSL-x64-debug no-shared no-asm threads no-idea no-mdc2 no-rc5
  • ※参考として--Openssldir=C:OpenSSLを入力すると、「C:OpenSSL」ディレクトリにライブラリがインストールされます
    ※no-idemano-mdc 2 no-rc 5は暗号化アルゴリズムのライセンスの問題でバージョンから除外されています
    perl Configure VC-WIN64A --openssldir=C:\OpenSSL-x64 no-shared no-asm threads no-idea no-mdc2 no-rc5
    入力後Enter.完了後にnmakeを使用して構築
    構築が完了したら、nmake testコマンドを使用してテストを実行し、nmake installコマンドを使用してインストールします.
    インストールパスがx 64の場合、C:Program FilesOpenSSLにインストールされます.

    libcurl


    libcurl githubから7.78をクローンします.
    https://github.com/curl/curl/tree/curl-7_78_0
    Opensslをサポートするlibcurlを作成するには、deps、lib、include、binを次のディレクトリに作成します.
    If you wish to support zlib, openssl, c-ares, ssh2, you will have to download them separately and copy them to the deps directory as shown below:
    somedirectory\
     |_curl-src
     | |_winbuild
     |
     |_deps
       |_ lib
       |_ include
       |_ bin
    
    次に、C:Program FilesOpenSSL位置のbin、include、libのすべてのコンテンツを名前で移動します.
    Visual studioコマンドは、管理者権限でPromptを実行します.(64ビット)
    ディレクトリの場所をcurl/winbuildに移動します.
  • バージョンコマンド+その他のオプション
  • nmake /f Makefile.vc mode=<static or dll> <option>
  • その他のオプション
  • where <options> is one or many of:
    
    VC=<num> - VC version. 6 or later.
    WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.) Defaults to sibbling directory deps: ../deps Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/ Uncompress them into the deps folder.
    WITH_SSL=<dll/static> - Enable OpenSSL support, DLL or static
    WITH_NGHTTP2=<dll/static> - Enable HTTP/2 support, DLL or static
    WITH_MBEDTLS=<dll/static> - Enable mbedTLS support, DLL or static
    WITH_CARES=<dll/static> - Enable c-ares support, DLL or static
    WITH_ZLIB=<dll/static> - Enable zlib support, DLL or static
    WITH_SSH2=<dll/static> - Enable libSSH2 support, DLL or static
    WITH_PREFIX=<dir> - Where to install the build
    ENABLE_SSPI=<yes/no> - Enable SSPI support, defaults to yes
    ENABLE_IPV6=<yes/no> - Enable IPv6, defaults to yes
    ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes Requires Windows Vista or later
    ENABLE_SCHANNEL=<yes/no> - Enable native Windows SSL support, defaults to yes if SSPI and no other SSL library
    ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes/no> - Enable loading OpenSSL configuration automatically, defaults to yes
    ENABLE_UNICODE=<yes/no> - Enable UNICODE support, defaults to no
    GEN_PDB=<yes/no> - Generate Program Database (debug symbols for release build)
    DEBUG=<yes/no> - Debug builds
    MACHINE=<x86/x64> - Target architecture (default is x86)
    CARES_PATH=<path> - Custom path for c-ares
    MBEDTLS_PATH=<path> - Custom path for mbedTLS
    NGHTTP2_PATH=<path> - Custom path for nghttp2
    SSH2_PATH=<path> - Custom path for libSSH2
    SSL_PATH=<path> - Custom path for OpenSSL
    ZLIB_PATH=<path> - Custom path for zlib
    nmake/f Makefile.vc mode=static VC=17 WITH_DEVEL=../deps MACHINE=x64 WITH_PREFIX=builds
    上記のコマンドには、静的ライブラリ、VC 17バージョン、depsディレクトリのopensslサポート、64ビットマシン、格納場所winbuild/buildsが含まれます.
    Enterはwinbuild/buildsにbin、lib、includeディレクトリを作成します.これをプロジェクトに適用すればいいです.
    Visual Studio 19を開きます.
    プロジェクトを作成し、次のコードを記述します.
    #include <stdio.h>
    #include <curl/curl.h>
    
    int main(void)
    {
        CURL* curl;
        CURLcode res;
    
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, "https://google.com");
            /* example.com is redirected, so we tell libcurl to follow redirection */
            curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    
            /* Perform the request, res will get the return code */
            res = curl_easy_perform(curl);
            /* Check for errors */
            if (res != CURLE_OK)
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
    
            /* always cleanup */
            curl_easy_cleanup(curl);
        }
        return 0;
    }
    プロジェクトプロパティーに入ります.

  • Debugプラットフォームx 64の変更点

  • デバッグの設定

  • VC++ディレクトリに入り、含むディレクトリにwinbuild/builds/includeを追加し、winbuild/build/libをライブラリディレクトリに追加します.

  • c/c++に入り、前プロセッサ定義にCULLR STATICLIBを追加

  • 他のライブラリディレクトリwinbuild/build/libを追加(Linkerに入る)

  • リンク入力の他の依存関係
    libcurl_a.lib
    libssl.lib
    ws2_32.lib
    crypt32.lib
    Wldap32.lib
    Normaliz.lib
    追加

  • コンフィギュレーション・バージョンでも上記の方法を繰り返します.
  • 構築成功