Window 下 OpenSSL 编绎过程

1. 下载 ActivePerl-5.12.4.1205  , openssl-0.9.8 , 配置Perl环境变量 , 解压openssl-0.9.8
2. 进入 CMD ,进入VS2008 / VS2010 命令提示界面. 执行: vcvarsall.bat
3. CD 切入 进入 openssl-0.9.8 解压目录 ,  执行  perl Configure VC-WIN32 no-asm
4. 执行 ms\do_ms
5. 修改编译参数 进入 ms\nt.mak 及 ms\ntdll.mak 移除参数 : /WX /G5
6. 执行 nmake -f ms\ntdll.mak (动态库) 或者 nmake -f ms\nt.mak (静态库)
本人编绎结果是: VS2010编绎 nmake -f ms\ntdll.mak 通过 , VS2008 编绎 nmake -f ms\nt.mak 通过
其中 VS2008 ntdll.mak 编绎通过,但运行异常。
7. cd out32dll 或 cd out32 切入输出目录,执行命令 ..\ms\test
结果: passed all tests 编绎成功。

配置开发环境,以 VS2008 为例:
1.工具->选项->项目和解决方案->VC++ 目录 添加两项:
    1.下拉列表切换至 包含文件 增加路径 为 OpenSSL解压路径下的 include 目录。
    2.下拉列表切换至 库文件 增加路径 为编绎后 outdll 目录 或out32dll 目录。

2.项目->属性 对话框 , 配置属性 -> 链接器 -> 命令行 添加  ssleay32.lib libeay32.lib 保存,也可取消该步骤,在代码文件中引入
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")

完成后,即可进入下一步代码调用 , 如果仍出现运行异常,尝试 项目->属性 对话框 , 配置属性 -> C/C++ -> 代码生成 运行库 切换为 多线程 DLL (/MD) , 因为OPENSSL 默认编绎 选择 /MD 模式。

补充一点,本人VS2008编绎  nmake -f ms\ntdll.mak 模式 代码无法正常运行 , 切换到 nmake -f ms\nt.mak 方式编绎 恢复正常运行。

编绎之后 Debug 模式在XP环境运行异常,原因是 XP环境中没有Debug 运行库环境,切换Release方式编绎可运行。

VS2010 之前 DLL有 程序清单配置,这个在 VS2010之后取消了。有时不同的运行环境库如VC90环境与VC100 不同编绎DLL混合运行会报错,可参考静态编绎。

检查运行环境清单:
项目->属性 对话框 , 配置属性 -> 清单工具 -> 输入和输出 嵌入清单 选否 , 如此,下次编译时,会生成同名的:  .manifest 后缀文件。

为了避免不必要麻烦, 如果 VS2008 做为开发环境,就用 VS2008做为DLL编绎环境,同理 VS2010 一样。

//////////////////////////////////////

重复编绎清除指令:
nmake -f ms\ntdll.mak clean
nmake -f ms\nt.mak clean

编绎openssl杂记(window)的更多相关文章

  1. Linux CentOS 编绎安装Python 3.5

    Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...

  2. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM

    Nicolas Bevacqua进行了一个比较JavaScript构建(编绎)系统的任务.他对三巨头: Grunt, Gulp and NPM进行了比较,并讨论了每种的优缺点. By Nicolas ...

  3. 编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)

      编绎报错,objc_msgSend too many arguments to function call,expected 0, have3 解决方法:    

  4. 编绎OpenJDK

    因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下. 本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库 ...

  5. CentOS编绎gcc

    1.解压tar -jxvf gcc-6.3.0.tar.bz2 -C ~/dev/2.下载前前提软件包cd gcc-6.3.0 ./contrib/download_prerequisitescd . ...

  6. Ubuntu编绎 Objective C程序

    1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...

  7. 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤

    编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsop ...

  8. python 2.5源代码编绎

    VS C++项目中,选择工程项名称,右菜单中选择--->仅适用于项目---->仅生成(项目) 1.make_buildinfo,make_versioninfo make_buildinf ...

  9. mysql 源码编绎修改 FLAGS,调试MYSQL

    http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_cmake_c_flags ...

随机推荐

  1. C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题

    public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...

  2. [css] 自适应布局 移动端自适应

    一.宽度自适应 三列布局左右固定.中间不固定或者两列布局,左边固定右边不固定 原文链接:http://www.cnblogs.com/2050/archive/2012/07/30/2614852.h ...

  3. Android开发面试经——4.常见Android进阶笔试题(更新中...)

      Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...

  4. PLSQL Developer连接远程Oracle方法(非安装客户端)

    Oracle比较麻烦,通常需要安装oracle的客户端才能实现.通过instantclient可以比较简单的连接远程的Oracle. 1.新建目录D:\Oracle_Cleint用于存放相关文件,新建 ...

  5. 转:C语言中的static变量和C++静态数据成员(static member)

    转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量        a.静态局部变量在函数内定义,生存期为整个程序 ...

  6. J2EE 第二阶段项目之JUnit4进行单元测试(五)

    今天学习了JUnit4进行单元测试.这样就可以不写页面直接进行过功能模块测试.也不是很深入的了解. JUnit4和自己写的代码可以分割开来. 首先呢准备两个jar包: 可以对mapper进行测试,当然 ...

  7. IE浏览器打印合格证相关问题

    0.打印机驱动,打印参数设置,首选项配置,数值都必须精确. 1.google浏览器死都不兼容,上下行之间会重叠. 解决方案:必须IE 2.IE 10,IE 11 需要开兼容性视图设置,添加该网站.不然 ...

  8. java 集合(ArrayList)

    ArrayList: ------------|Collection 单列集合的跟接口 ----------------------|List  有序,可重复. ------------------- ...

  9. 关于MySQL大牛周振兴的博客

    博客内容比较丰富 MySQL管理 数据恢复 linux TCP 个人生活感触 不过内容总体是笔记式的,更适合自己看,不适合初学者去follow.不过对MySQL比较熟悉的人,可以看看,作为扩展眼界的途 ...

  10. win8 卸载IIS

    C:\Windows\System32\inetsrv C:\Windows\iis7.log C:\inetpub