1.先編譯zlib下載地址 http://zlib.net/
我這邊vc2015編譯需要配置環境變量,不知道是裝了wdk的原因還是多個vc版本的原因
設置環境變量lib和include路徑
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\sys
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64
然后用vc2015的控制台命令,進入到代碼路徑
nmake -f win32\Makefile.msc clean
nmake -f win32\Makefile.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
編譯主要參考自帶的文檔 winbuild\BUILD.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.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.3\deps" 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.3\deps" 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目錄下面的所有文件,再來一次
原因看config-win32.h里面的
# if defined(_USING_V110_SDK71_)
# define VS2012_DEF_TARGET 0x0501
# else
# define VS2012_DEF_TARGET 0x0600
# endif
編譯完成后會得到builds\libcurl-vc14-x86-release-dll-ssl-dll-zlib-dll-ipv6-sspi目錄,里面的東西就是我們想要的了
不過,得到的libcurl好像並沒有導入zlib,盡管上面的命令是動態導入的dll