Win10+VS2015编译libcurl
目标:vc环境下 libcurl库
材料:
1. Curl源码,可从官网下载,https://curl.haxx.se/download.html,当前版本使用的是7.50.3
2. openssl在window下编译的库文件+头文件,可参照编译openssl的方式自行编译,也可以直接下载编译好的。http://windows.php.net/downloads/php-sdk/deps/
步骤:
1. 解压curl及整理openssl材料,openssl和curl文件夹放在同一个文件目录下,openssl的文件目录如下
openssl文件夹(如openssl-1.0.1t-vc14-x86)
│
├─bin(文件夹下放.dll动态库)
├─include
│ └─openssl(文件夹下放.h头文件)
├─lib(文件夹下放静态库.lib文件)
2.创建一个.bat文件(如build_lib_bat_vc14.bat),内容如下(vc版本,openssl文件夹名及动/静态库可视情况改动),并将该bat文件放到curl源码文件夹下的winbuild文件夹中。
静态库
@REM @echo off
@IF [%1]==[debug] (
@echo 正在使用debug模式编译libcurl~~~
@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc14-x86 mode=static VC=14 WITH_SSL=static ENABLE_IDN=no RTLIBCFG=dll DEBUG=yes MACHINE=x86
) ELSE (
@echo 正在使用release模式编译libcurl~~~
@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc14-x86 mode=static VC=14 WITH_SSL=static ENABLE_IDN=no RTLIBCFG=dll DEBUG=no MACHINE=x86
)
@REM @echo on
动态库
@REM @echo off
@IF [%1]==[debug] (
@echo 正在使用debug模式编译libcurl~~~
@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc14-x86 mode=dll VC=14 WITH_SSL=dll ENABLE_IDN=no RTLIBCFG=dll DEBUG=yes MACHINE=x86
) ELSE (
@echo 正在使用release模式编译libcurl~~~
@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc14-x86 mode=dll VC=14 WITH_SSL=dll ENABLE_IDN=no RTLIBCFG=dll DEBUG=no MACHINE=x86
)
@REM @echo on
3. 点击 windows 开始->所有应用->vs2015->开发者命令提示(Developer Command Prompt for 2015)。
4. CD到curl源码的winbuild目录。
5. 执行build_lib_bat_vc14.bat release。
6. 如build成功,会在源码目录下的builds文件下找到include和lib,如下图结构。
├─libcurl-vc14-x86-release-static-ssl-static-ipv6-sspi
│ ├─bin
│ ├─include
│ │ └─curl
│ └─lib
#PS:
添加libcurl库和头文件后编译可能会提示错误,无法解析的外部符号。
解决方法:
1. 给工程添加依赖库:项目->属性->链接器->输入->附加依赖项,ws2_32.lib;winmm.lib;wldap32.lib添加进去。
2. 加入预编译选项,项目->属性->c/c++ ->预处理器->预处理器定义,把;BUILDING_LIBCURL;HTTP_ONLY添加进去,注意分号。