很多人都遇到過用老版本visual studio(如2005)編譯libcurl時報無法找到Normaliz.lib的問題,之前已經有人找到修改libcurl源碼 lib\idn_win32.c的方案,就是藉助 Normaliz.dll 來實現對 IdnToAscii和 IdnToUnicode 的調用,參考鏈接:http://www.cnblogs.com/passedbylove/p/5979927.html。
其實也可以直接添加Normaliz.lib解決這個問題。Normaliz.lib 屬於Window SDK v7.1A的一部分,你要是安裝了這個SDK,就可以在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib下找到庫文件。如果官網找不到這個SDK,就到這兒下載(https://download.csdn.net/download/Tonyfield/12333022)。
本人是手動添加的,簡單粗暴。
1. 將SDK v7.1A解壓到 C:\Program Files (x86)\Microsoft SDKs\Windows\
2. 修改 C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat
頭文件路徑INCLUDE 增加 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
庫文件路徑LIB 增加 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
以下給出修改部分。
@set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
@set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
3. 如果考慮對 x64的支持,也要修改 C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\x86_amd64\vcvarsx86_amd64.bat,這對於編譯libcurl沒有必要。
4. 最後用批處理工具 https://github.com/blackrosezy/build-libcurl-windows 完成編譯。 本人針對 curl-7.69.1 做了一些修改,省的每次下載。
- REM Get download url .Look under <blockquote><a type='application/zip' href='xxx'>
- echo Get download url...
- %XIDEL% https://curl.haxx.se/download.html -e "//a[@type='application/zip' and ends-with(@href, '.zip')]/@href" > tmp_url
- set /p url=<tmp_url
- REM exit on errors, else continue
- if %errorlevel% neq 0 exit /b %errorlevel%
- REM Download latest curl and rename to curl.zip
- echo Downloading latest curl...
- set "LOCAL_CURL=%~dp0\curl.zip"
- bitsadmin.exe /transfer "curltransfer" "https://curl.haxx.se%url%" "%LOCAL_CURL%"
- REM Extract downloaded zip file to tmp_libcurl
- %SEVEN_ZIP% x curl.zip -y -otmp_libcurl | FIND /V "ing " | FIND /V "Igor Pavlov"
- cd tmp_libcurl\curl-*\winbuild
+ REM Extract downloaded zip file to tmp_libcurl
+ %SEVEN_ZIP% x curl-7.69.1.zip
+ cd curl-7.69.1\winbuild
編譯好的庫:https://download.csdn.net/download/Tonyfield/12333198
參考鏈接:
比較全面的討論libcurl的靜態庫編譯問題 : https://blog.csdn.net/amosfeng/article/details/78361663
修改 libcurl源碼解決 Normaliz.LIB缺失引起的編譯問題:http://www.cnblogs.com/passedbylove/p/5979927.html