<!--
Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# Building curl with Visual C++
This document describes how to compile, build and install curl and libcurl
from sources using the Visual C++ build tool. To build with VC++, you will of
course have to first install VC++. The minimum required version of VC is 6
(part of Visual Studio 6). However using a more recent version is strongly
recommended.
VC++ is also part of the Windows Platform SDK. You do not have to install the
full Visual Studio or Visual C++ if all you want is to build curl.
The latest Platform SDK can be downloaded freely from [Windows SDK and
emulator
archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
## Prerequisites
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
It is also possible to create the deps directory in some other random places
and tell the Makefile its location using the WITH_DEVEL option.
## Building straight from git
When you check out code git and build it, as opposed from a released source
code archive, you need to first run the `buildconf.bat` batch file (present
in the source code root directory) to set things up.
## Open a command prompt
Open a Visual Studio Command prompt:
Using the **'Developer Command Prompt for VS [version]'** menu entry: where
[version} is the Visual Studio version. The developer prompt at default uses
the x86 mode. It is required to call `Vcvarsall.bat` to setup the prompt for
the machine type you want. This type of command prompt may not exist in all
Visual Studio versions.
See also: [Developer Command Prompt for Visual
Studio](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs)
and [How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command
line](https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line)
Using the **'VS [version] [platform] [type] Command Prompt'** menu entry:
where [version] is the Visual Studio version, [platform] is e.g. x64 and
[type] Native of Cross platform build. This type of command prompt may not
exist in all Visual Studio versions.
See also: [Set the Path and Environment Variables for Command-Line Builds](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line)
## Build in the console
Once you are in the console, go to the winbuild directory in the Curl
sources:
cd curl-src\winbuild
Then you can call `nmake /f Makefile.vc` with the desired options (see
below). The builds will be in the top src directory, `builds\` directory, in
a directory named using the options given to the nmake call.
nmake /f Makefile.vc mode=<static or dll> <options>
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_MSH3=<dll/static>` - Enable (experimental) HTTP/3 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_SSH=<dll/static>` - Enable libSSH 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 External 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
- `MSH3_PATH=<path>` - Custom path for msh3
- `SSH2_PATH=<path>` - Custom path for libSSH2
- `SSL_PATH=<path>` - Custom path for OpenSSL
- `ZLIB_PATH=<path>` - Custom path for zlib
## Static linking of Microsoft's C RunTime (CRT):
If you are using mode=static nmake will create and link to the static build
of libcurl but *not* the static CRT. If you must you can force nmake to link
in the static CRT by passing RTLIBCFG=static. Typically you shouldn't use
that option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used
and therefore rarely tested. When passing RTLIBCFG for a configuration that
was already built but not with that option, or if the option was specified
differently, you must destroy the build directory containing the
configuration so that nmake can build it from scratch.
This option is not recommended unless you have enough development experience
to know how to match the runtime library for linking (that is, the CRT).
If RTLIBCFG=static then release builds use /MT and debug builds use /MTd.
## Building your own application with libcurl (Visual Studio example)
When you build curl and libcurl, nmake will show the relative path where the
output directory is. The output directory is named from the options nmake used
when building. You may also see temp directories of the same name but with
suffixes -obj-curl and -obj-lib.
For example let's say you've built curl.exe and libcurl.dll from the Visual
Studio 2010 x64 Win64 Command Prompt:
nmake /f Makefile.vc mode=dll VC=10
The output directory will have a name similar to
..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel.
The output directory contains subdirectories bin, lib and include. Those are
the directories to set in your Visual Studio project. You can either copy the
output directory to your project or leave it in place. Following the example,
let's assume you leave it in place and your curl top source directory is
C:\curl-7.82.0. You would set these options for configurations using the x64
platform:
~~~
- Configuration Properties > Debugging > Environment
PATH=C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\bin;%PATH%
- C/C++ > General > Additional Include Directories
C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\include;
- Linker > General > Additional Library Directories
C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\lib;
- Linker > Input > Additional Dependencies
libcurl.lib;
~~~
For configurations using
没有合适的资源?快使用搜索试试~ 我知道了~
curl windows版本,防止有些同学下载不了
共2000个文件
c:545个
3:478个
d:248个
需积分: 6 0 下载量 200 浏览量
2022-10-24
11:07:50
上传
评论
收藏 6.09MB ZIP 举报
温馨提示
666
资源详情
资源评论
资源推荐
收起资源包目录
curl windows版本,防止有些同学下载不了 (2000个子文件)
curl.1 182KB
runtests.1 8KB
testcurl.1 5KB
mk-ca-bundle.1 5KB
curl-config.1 4KB
libcurl-tutorial.3 61KB
libcurl-symbols.3 53KB
curl_easy_setopt.3 32KB
libcurl-security.3 22KB
libcurl-errors.3 18KB
curl_formadd.3 13KB
libcurl.3 12KB
curl_easy_getinfo.3 11KB
curl_mprintf.3 11KB
curl_version_info.3 10KB
libcurl-multi.3 9KB
curl_url_set.3 7KB
CURLOPT_SSL_CTX_FUNCTION.3 7KB
curl_easy_header.3 7KB
CURLINFO_TLS_SSL_PTR.3 6KB
curl_mime_data_cb.3 6KB
CURLOPT_HTTPHEADER.3 6KB
CURLOPT_HTTPAUTH.3 6KB
libcurl-thread.3 6KB
CURLOPT_URL.3 5KB
CURLOPT_RTSP_REQUEST.3 5KB
curl_multi_socket_action.3 5KB
CURLMOPT_PUSHFUNCTION.3 5KB
CURLOPT_SSH_KEYFUNCTION.3 5KB
CURLOPT_DEBUGFUNCTION.3 5KB
curl_easy_pause.3 5KB
curl_url_get.3 5KB
libcurl-url.3 5KB
CURLOPT_NETRC.3 5KB
CURLOPT_HEADERFUNCTION.3 5KB
curl_getdate.3 5KB
CURLOPT_QUOTE.3 5KB
CURLOPT_SOCKOPTFUNCTION.3 5KB
curl_global_init.3 5KB
libcurl-env.3 5KB
CURLOPT_OPENSOCKETFUNCTION.3 5KB
CURLOPT_PROXY.3 5KB
CURLOPT_COOKIELIST.3 5KB
curl_global_sslset.3 5KB
CURLOPT_CONNECT_TO.3 5KB
curl_multi_fdset.3 5KB
CURLOPT_READFUNCTION.3 5KB
CURLOPT_PINNEDPUBLICKEY.3 4KB
curl_multi_wait.3 4KB
CURLOPT_ACCEPT_ENCODING.3 4KB
CURLOPT_WRITEFUNCTION.3 4KB
curl_multi_poll.3 4KB
CURLOPT_CHUNK_BGN_FUNCTION.3 4KB
CURLOPT_SSLVERSION.3 4KB
CURLOPT_PROXY_PINNEDPUBLICKEY.3 4KB
CURLOPT_CUSTOMREQUEST.3 4KB
CURLSHOPT_SHARE.3 4KB
CURLOPT_SSL_CTX_DATA.3 4KB
curl_multi_perform.3 4KB
CURLOPT_XFERINFOFUNCTION.3 4KB
CURLOPT_SSL_OPTIONS.3 4KB
CURLOPT_SSL_VERIFYPEER.3 4KB
CURLOPT_PROGRESSFUNCTION.3 4KB
CURLOPT_PROXY_SSL_OPTIONS.3 4KB
CURLOPT_PREREQFUNCTION.3 4KB
CURLMOPT_SOCKETFUNCTION.3 4KB
curl_multi_socket.3 4KB
curl_easy_nextheader.3 4KB
curl_easy_recv.3 4KB
CURLOPT_RESOLVE.3 4KB
CURLOPT_DOH_SSL_VERIFYPEER.3 4KB
CURLOPT_HTTP_VERSION.3 4KB
CURLOPT_POSTFIELDS.3 4KB
CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 4KB
CURLOPT_SSL_VERIFYHOST.3 4KB
CURLMOPT_TIMERFUNCTION.3 4KB
CURLOPT_TRAILERFUNCTION.3 4KB
CURLOPT_POST.3 4KB
CURLOPT_PROXY_SSL_VERIFYPEER.3 4KB
CURLOPT_WILDCARDMATCH.3 4KB
CURLOPT_CONV_TO_NETWORK_FUNCTION.3 4KB
curl_multi_info_read.3 4KB
curl_easy_send.3 4KB
CURLOPT_CAINFO.3 4KB
CURLOPT_AWS_SIGV4.3 4KB
CURLOPT_CONV_FROM_UTF8_FUNCTION.3 4KB
CURLMOPT_PIPELINING.3 4KB
curl_mime_encoder.3 4KB
CURLOPT_SEEKFUNCTION.3 4KB
CURLOPT_PROXY_SSL_CIPHER_LIST.3 4KB
CURLOPT_INTERLEAVEFUNCTION.3 4KB
curl_easy_perform.3 4KB
CURLOPT_DOH_URL.3 4KB
CURLOPT_PROXY_CAINFO.3 4KB
CURLOPT_USERPWD.3 4KB
CURLOPT_ALTSVC_CTRL.3 4KB
curl_multi_setopt.3 4KB
CURLOPT_PROXY_ISSUERCERT_BLOB.3 4KB
CURLOPT_PROXY_SSLVERSION.3 4KB
CURLOPT_SSL_CIPHER_LIST.3 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
secondbrother2
- 粉丝: 2
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 通道处理过程的模拟通常涉及对通道处理机制的理解与实现.txt
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0