vc2010編譯openssl時cl.exe報告0xC0000135錯誤的解決

當前正在做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%
)

繼續編譯,通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章