运行openssl demo 时,debug 版本正常,release 版本报异常:OPENSSL_Uplink(585E6000,08): no OPENSSL_Applink 。demo 编译环境是vs2008 , openssl 库编译环境是 vs2010 , 用 depends 工具分析Libeay32.dll 依赖msvcr100.dll , 推测可能与demo 运行环境有关,因此重新在vs2008 tool x86环境下编译openssl , 再次运行demo , 结果仍然报错。
后来查明是因为使用 nmake -f ms\ntdll.mak 指令编译openssl , 编译成了动态库,改成 nmake -f ms\nt.mak编译静态库,正常。
openssl 静态库输出路径:out32 (nt.mak) , 动态库路径:out32dll(ntdll.mak)
附上一张c++ 运行库不同版本编译指令说明书:
C Runtime Library:
/MD MSVCRT.LIB 多线程DLL的Release版本
/MDd MSVCRTD.LIB 多线程DLL的Debug版本
/MT LIBCMT.LIB 多线程静态链接的Release版本
/MTd LIBCMTD.LIB 多线程静态链接的Debug版本
/clr MSVCMRT.LIB 托管代码和非托管代码混合
/clr:pure MSVCURT.LIB 纯托管代码
C++ Standard Library:
/MD MSVCPRT.LIB 多线程DLL的Release版本
/MDd MSVCPRTD.LIB 多线程DLL的Debug版本
/MT LIBCPMT.LIB 多线程静态链接的Release版本
/MTd LIBCPMTD.LIB 多线程静态链接的Debug版本
原文链接:http://blog.csdn.net/qncj666/article/details/8244893