1. 程式人生 > >vc2010編譯openssl時cl.exe報告0xC0000135錯誤的解決

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

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

繼續編譯,通過。