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%
)

继续编译,通过。

猜你喜欢

转载自blog.csdn.net/hylaking/article/details/83586964