一:编译工具
http://www.nasm.us/pub/nasm/releasebuilds/2.06/win32/nasm-2.06-installer.exe
下载并安装。
2、安装脚本语言ActivePerl。从
下载,然后安装(安装过程中选择默认选项即可)。
OpenSSL库网上只有源代码,我们首先必须编译。从
http://www.openssl.org/source/openssl-1.0.1e..tar.gz
下 载源代码包,然后解压到目录C:/openssl-1.0.1e下(最终存在目录C:/openssl-1.0.1e/apps即表示正确)。进入 Visual Studio 2008的命令提示符(开始–>所有程序–>Microsoft Visual Studio 2008–>Visual Studio Tools–>Visual Studio 2008 Command Prompt),依次输入如下命令:
1. 创建库目录
—输出如下的信息:……RC4_CHUNK is undefinedConfigured for VC-WIN32.
ms\do_ms.bat
5. 编译动态库:
nmake -f ms\ntdll.mak
6. 编译静态库:
nmake -f ms\nt.mak
nmake -f ms\ntdll.mak test
8. 测试静态库:
nmake -f ms\nt.mak test
nmake -f ms\ntdll.mak install
10. 安装静态库:
nmake -f ms\nt.mak install
nmake -f ms\ntdll.mak clean
12. 清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean
三、问题
我在链接OpenSSL的静态函数库时遇到类似以下的问题:
Linking…
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
…
这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。
调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下:
编辑文件 ms\nt.mak,将该文件第19行
“CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE –
D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 –
DOPENSSL_NO_DYNAMIC_ENGINE”
中的”/MD”修改为”/MT”。然后重新编译安装OpenSSL即可。
转载于:https://www.cnblogs.com/jdfemqi/p/3365232.html