我是靠谱客的博主 机灵黑夜,最近开发中收集的这篇文章主要介绍vc2015 编译libcurl带openssl,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

vc2015 编译libcurl带openssl

1.先编译zlib下载地址 http://zlib.net/

我这边vc2015编译需要配置环境变量,不知道是装了wdk的原因还是多个vc版本的原因

设置环境变量lib和include路径

INCLUDE=C:Program Files (x86)Windows Kits10Include10.0.10586.0um;C:Program Files (x86)Windows Kits10Include10.0.10586.0shared;C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrt;C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrtsys
LIB=C:Program Files (x86)Windows Kits10Lib10.0.10586.0umx64;C:Program Files (x86)Windows Kits10Lib10.0.10586.0ucrtx64

然后用vc2015的控制台命令,进入到代码路径

nmake -f win32Makefile.msc clean
nmake -f win32Makefile.msc

编译完成后,修改lib路径为x86路径,注销系统,重新执行vc2015的控制台(x86)版本,即可生成对应的dll和lib

如果需要编译mt版本的,修改Makefile.msc中的CFLAGS  = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 中的MD为MT

这编译出来的是realse版本的,如果debug版本项目使用realse版本zlib的时候,需要将多线程调试 DLL (/MDd)" 改为 "多线程 DLL (/MD)


2.编译openssl http://www.cnblogs.com/ultracpp/p/3463110.html


3.编译libcurl
下载地址  https://curl.haxx.se/download.html
编译主要参考自带的文档 winbuildBUILD.WINDOWS.txt
同样修改 lib路径(同上)

同样使用vc命令行,cd到curl-*winbuild路径下配置deps目录

切换x86的时候直接用x86的lib替换掉就可以了

执行命令如:
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.0deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.0deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86

nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.3deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64

nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:curl-7.50.3deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86

Enable use of Windows IDN APIs, defaults to yes Requires Windows Vista or later

如果编译失败,提示连接错误之类的,可以尝试直接清空builds目录下面的所有文件,再来一次

如果出现在xp下面运行无法定位程序输入点GetTickCount64的话,需要自己手动修改MakefileBuild.vc文件,找到
!IF "$(VC)"=="6"
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
CFLAGS = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
!ELSE
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd /W3
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
!ENDIF
 
修改后面的
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_USING_V110_SDK71_
 
找到(后面也增加/D_USING_V110_SDK71_)
CURL_CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_USING_V110_SDK71_
CURL_LFLAGS = /nologo /out:$(DIRDIST)bin$(PROGRAM_NAME) /subsystem:console,"5.01" /machine:$(MACHINE)

原因看config-win32.h里面的

#  if defined(_USING_V110_SDK71_)
#    define VS2012_DEF_TARGET 0x0501
#  else
#    define VS2012_DEF_TARGET 0x0600
#  endif

编译完成后会得到buildslibcurl-vc14-x86-release-dll-ssl-dll-zlib-dll-ipv6-sspi目录,里面的东西就是我们想要的了

 

不过,得到的libcurl好像并没有导入zlib,尽管上面的命令是动态导入的dll

posted on 2016-07-25 16:43 ultracpp 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ultracpp/p/5704081.html

最后

以上就是机灵黑夜为你收集整理的vc2015 编译libcurl带openssl的全部内容,希望文章能够帮你解决vc2015 编译libcurl带openssl所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部