
Windows下使用VS2026编译curl-7.80.0.zip依赖zlib-1.2.8.tar.gz openssl-1.1.1w.tar.gz 。三个库均编译 为64位 release静态库。1、编译zlibcd E:\SoftwareDev\WebDownload\zlib-1.2.8 mkdir build cd build cmake .. -A x64 -DBUILD_SHARED_LIBSOFF -DCMAKE_POLICY_VERSION_MINIMUM3.5 -DCMAKE_INSTALL_PREFIXE:\openssl-install\static-x64-release编译release版本静态库cmake --build . --config Release生成后文件在E:\SoftwareDev\WebDownload\zlib-1.2.8\build\Release 目录下静态库为zlibstatic.lib。安装cmake --install . --config Release2、编译openssl参考用VS2019编译librdkafka库_librdkafka windows 需要哪些依赖库-CSDN博客https://blog.csdn.net/eamon100/article/details/1155883532.1 安装依赖的软件perl和nasm。2.2 配置库ppm install dmake perl Configure VC-WIN64A no-shared --prefixD:\openssl-install\static-x64-releaseVC代表 Visual C (Microsoft Visual Studio 编译器)。WIN64代表 Windows 64位 平台。A代表 AMD64/Intel 64 架构即常见的 x86_64。no-shared含义禁用共享库动态链接库 .dll的构建。作用强制 OpenSSL 只编译 静态库.lib 文件即 libcrypto.lib 和 libssl.lib。生成的程序在链接时会将 OpenSSL 的代码直接打包进 .exe 或 .dll 中运行时不再依赖外部的 libcrypto-1_1-x64.dll 等文件。注意在 OpenSSL 1.1.x 系列中no-shared 通常也意味着不会生成用于导入 DLL 的 .lib 文件而是生成包含实际代码的静态归档库。--prefixE:\openssl-install\static-x64-release含义指定安装目录的前缀路径。作用当你后续执行nmake install时编译好的头文件include/、库文件lib/和二进制工具bin/openssl.exe会被复制到这个目录下。重要提示在 Windows 上--prefix必须使用 绝对路径如本例所示不能使用相对路径如./install否则配置会报错。2.3 编译安装nmake 编译 nmake install 安装 nmake clean 清理编译生成 libcrypto.lib 和 libssl.lib。2.4 测试OpenSSL 静态库依赖 Windows 系统库必须在链接器中添加以下库ws2_32.lib crypt32.lib advapi32.lib user32.lib#include stdio.h #include stdlib.h #include string.h #include openssl/ssl.h #include openssl/err.h #include openssl/sha.h #include openssl/crypto.h #define OPENSSL_STATIC /* * 注意在 Windows MSVC 环境下编译 OpenSSL 1.1.1 静态库时 * 通常需要定义 OPENSSL_STATIC 宏以确保链接正确的库符号。 */ #ifdef _MSC_VER #pragma comment(lib, libssl.lib) #pragma comment(lib, libcrypto.lib) /* 如果使用的是静态运行时库(/MT)可能还需要链接以下系统库 */ #pragma comment(lib, ws2_32.lib) #pragma comment(lib, advapi32.lib) #pragma comment(lib, crypt32.lib) #pragma comment(lib, user32.lib) #endif void print_openssl_version() { printf(OpenSSL Version: %s\n, OpenSSL_version(OPENSSL_VERSION)); printf(Built on: %s\n, OpenSSL_version(OPENSSL_BUILT_ON)); printf(Platform: %s\n, OpenSSL_version(OPENSSL_PLATFORM)); } void test_sha256(const char* input) { unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_CTX sha256; if (!SHA256_Init(sha256)) { fprintf(stderr, SHA256_Init failed\n); return; } if (!SHA256_Update(sha256, input, strlen(input))) { fprintf(stderr, SHA256_Update failed\n); return; } if (!SHA256_Final(hash, sha256)) { fprintf(stderr, SHA256_Final failed\n); return; } printf(SHA256 Hash of \%s\: , input); for (int i 0; i SHA256_DIGEST_LENGTH; i) { printf(%02x, hash[i]); } printf(\n); } int main() { /* 初始化 OpenSSL 库 */ OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL); printf(--- OpenSSL 1.1.1w Static Library Test ---\n); /* 1. 测试版本信息 */ print_openssl_version(); /* 2. 测试基本加密功能 (SHA256) */ const char* test_string Hello, OpenSSL 1.1.1w!; test_sha256(test_string); /* 清理资源 */ EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); printf(--- Test Completed Successfully ---\n); return 0; }3、编译curlmkdir buildcmake .. -DCMAKE_USE_OPENSSLON -DCURL_ZLIBON -DBUILD_SHARED_LIBSOFF -DCURL_STATICLIBON -DCURL_DISABLE_FTPOFF -DCURL_DISABLE_HTTPOFF -DCURL_DISABLE_MQTTOFF -DCURL_DISABLE_LDAPON -DCURL_DISABLE_TELNETON -DCURL_DISABLE_DICTON -DCURL_DISABLE_FILEON -DCURL_DISABLE_IMAPON -DCURL_DISABLE_POP3ON -DCURL_DISABLE_SMTPON -DCURL_DISABLE_GOPHERON -DCURL_DISABLE_SMBON -DCURL_DISABLE_TFTPON -DCMAKE_DISABLE_FIND_PACKAGE_LibSSH2TRUE -DCMAKE_PREFIX_PATHE:\openssl-install\static-x64-release编译cmake --build . --config ReleaseE:\SoftwareDev\WebDownload\curl-7.80.0\build\lib\Release\libcurl.lib查看链接情况E:\SoftwareDev\WebDownload\curl-7.80.0\builddumpbin /SYMBOLS E:\SoftwareDev\WebDownload\curl-7.80.0\build\lib\Release\libcurl.lib | findstr /i zlibVersion 029 00000000 UNDEF notype () External | zlibVersion 066 00000000 UNDEF notype () External | zlibVersion E:\SoftwareDev\WebDownload\curl-7.80.0\builddumpbin /ARCHIVEMEMBERS E:\SoftwareDev\WebDownload\curl-7.80.0\build\lib\Release\libcurl.lib | findstr /i ssl crypto Archive member name at 2CA6C: /187 libcurl.dir\Release\wolfssl.obj Archive member name at 3A290: /386 libcurl.dir\Release\openssl.obj Archive member name at 5DCBC: /644 libcurl.dir\Release\bearssl.obj E:\SoftwareDev\WebDownload\curl-7.80.0\build使用curl库的例子【免费】curl-7.80.0静态库简单示例资源-CSDN下载