當前正在做LoRa等IoT方面的工作,按周先森的博文《Windows 編譯 MQTT C++ Client》//www.cnblogs.com/XiaoGuanYu/p/8168714.html編譯mqtt之前,按以下博文:
Mr_謝: openssl windows平臺編譯庫 https://www.cnblogs.com/xie-tong/p/7825460.html
concussion:Windows下編譯OpenSSL https://www.cnblogs.com/zc2014blog/archive/2017/08/02/7272355.html
準備win32版本openssl庫的時候,vc2010報告如下錯誤:
E:\openssl\openssl-1.0.2p>nmake -f ms\ntdll.mak
Microsoft (R) 程序維護實用工具 10.00.30319.01 版
版權所有(C) Microsoft Corporation。保留所有權利。
Building OpenSSL
perl .\util\copy-if-different.pl ".\crypto\buildinf.h" "tmp32dll\buildinf.h"
Copying: ./crypto/buildinf.h to tmp32dll/buildinf.h
perl .\util\copy-if-different.pl ".\crypto\opensslconf.h" "inc32\openssl\opensslconf.h"
Copying: ./crypto/opensslconf.h to inc32/openssl/opensslconf.h
cl /Fotmp32dll\mem_clr.obj -Iinc32 -Itmp32dll /MD /Ox /O2 /Ob2 -DOPENSSL_THREADS -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_SSL2 -DOPENSSL_NO_KRB5 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_WEAK_SSL_CIPHERS -DOPENSSL_NO_STATIC_ENGINE /Zi /Fdtmp32dll/lib -D_WINDLL -DOPENSSL_BUILD_SHLIBCRYPTO -c .\crypto\mem_clr.c
NMAKE : fatal error U1077: “"c:\Program Files\Microsoft Visual Studio 10.0\vc\bin\cl.EXE"”: 返回代碼“0xc0000135”
Stop.
檢索網上的解決方法,說是未執行vcvar32.bat導致的。於是,執行vc2010之bin目錄下的vcvar32.bat,報告如下錯誤:
C:\Program Files\Microsoft Visual Studio 10.0\VC>.\bin\vcvars32.bat
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
此時不應有 Management。
呵呵,這個錯誤我熟悉呀,編譯boost的時候爲這個寫過博文。輕車熟路地,將vcvars32拷貝到openssl目錄下,打開vcvars32.bat文件,加上echo打印調試語句,發現執行如下語句時會出錯:
if "%xxx"=="yyy" (
SET "PATH=%FSHARPINSTALLDIR%;%PATH%"
)
將代碼更改爲如下:
if "%xxx"=="yyy" (
SET PATH=%FSHARPINSTALLDIR%;%PATH%
)
繼續編譯,通過。