Ale*_*lex 5 c++ windows openssl nasm visual-studio-2012
我一直在遵循《OpenSSL用户指南》中的说明,该指南链接到3noch的编译OpenSSL 的指南。以下是我使用的工具/版本:
按照说明,我能够执行以下命令而不会出现问题:
perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32
ms\do_ms
Run Code Online (Sandbox Code Playgroud)
然后,当我继续执行
nmake -f ms\nt.mak
Run Code Online (Sandbox Code Playgroud)
我收到以下
Assembling: tmp32\sha1-586.asm
tmp32\sha1-586.asm(1432) : error A2070:invalid instruction operands
tmp32\sha1-586.asm(1576) : error A2070:invalid instruction operands
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\BIN\ml.EXE"' : return code '0x1'
Stop.
Run Code Online (Sandbox Code Playgroud)
在调查了这个问题之后,我发现HostageBrain的博客文章提到了确切的错误,指出要使用nasm进行编译。因此,我切换到以下命令序列:
perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32
ms\do_nasm
nmake -f ms\nt.mak
Run Code Online (Sandbox Code Playgroud)
但是,一旦切换到NASM版本,就会收到以下错误:
tmp32\sha1-586.asm:1: error: parser: instruction expected
tmp32\sha1-586.asm:2: error: parser: instruction expected
tmp32\sha1-586.asm:3: error: parser: instruction expected
tmp32\sha1-586.asm:4: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:5: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:6: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:7: error: symbol `IF' redefined
tmp32\sha1-586.asm:7: error: parser: instruction expected
tmp32\sha1-586.asm:8: error: parser: instruction expected
tmp32\sha1-586.asm:9: error: comma expected after operand 1
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是能够将OpenSSL编译为.lib文件,然后可以从其他C ++项目链接到该文件,例如在编译FreeTDS时。
我使用 VS 2015 在 Windows 10 上的常规命令提示符下使用以下命令构建了该库(显示了调试构建):
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat"
perl Configure debug-VC-WIN64A --prefix=C:\Path\to\target\folder
ms\do_win64a
nmake -f ms\ntdll.mak
cd out32dll.dbg
..\ms\test
cd ..
nmake -f ms\ntdll.mak install
Run Code Online (Sandbox Code Playgroud)