• [转]VS2013编译64位OpenSSL


    安装ActivePerl

    这个没什么好说的,直接运行msi即可。

    编译OpenSSL

    1.使用Visual Studio Tool中的“VS2013 x64 本机工具命令提示”来打开控制台;也可以打开一个控制台,然后进到“安装路径Microsoft Visual Studio 12.0VCinamd64“中运行vcvars64.bat;

    2.解压下载下来的openssl的压缩包,进入解压文件夹,输入命令:perl Configure VC-WIN64A;

    3.输入命令msdo_win64a;

    4.输入命令nmake –f ms t.mak开始编译,如需要dll则命令为nmake –f ms tdll.mak(如果前面没有配置好发现使用了32bit的nmake,可使用绝对路径使用“安装路径Microsoft Visual Studio 12.0VCinamd64 make.exe”);

    5.如编译成功,可使用nmake –f ms t.mak test来测试。

    PS:如果需要编译32bit的,第一步使用x86的控制台,二三步中改为VC-WIN32和msdo_ms。

    配置VS

    1.项目->属性->配置属性->VC++ 目录->包含目录,将openssl文件夹的inc32添加进去;项目->属性->配置属性->VC++目录->库目录,添加openssl文件夹下的out32dll;

    2.项目->属性->配置属性->链接器->输入->附加依赖项,增加libeay32.lib和ssleay32.lib;

    3.将out32dll中的libeay32.dll和ssleay32.dll拷贝至工程目录下。

     

    编译当中遇到的错误和解决办法

     

    OpenSSL编译的时候提示少了strings.h头文件

    修改这个文件

    crypto/o_str.c

     

    #if !defined(OPENSSL_IMPLEMENTS_strncasecmp) &&

    !defined(OPENSSL_SYSNAME_WIN32) &&

    !defined(NETWARE_CLIB)

    # include <strings.h>

    #endif

     

    这个编译开关定义了就可以了

    定义的方法在nt.mak  这个文件中的CFLAG 将-DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN 

    这两个宏加进去

     

    还有一个重复定义的问题,这样也可以一并解决

    链接错误

     

    link /nologo /subsystem:console /opt:ref /debug /dll /out:out32dlllibea
    y32.dll /def:ms/LIBEAY32.def @C:UsersUnstAppDataLocalTemp m75AD.tmp
    bn-586.obj : error LNK2005: _bn_sub_part_words 已经在 bn_mul.obj 中定义
    正在创建库 out32dlllibeay32.lib 和对象 out32dlllibeay32.exp
    mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr
    mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr
    out32dlllibeay32.dll : fatal error LNK1120: 1 个无法解析的外部命令
    NMAKE : fatal error U1077: “"D:Program FilesMicrosoft Visual Studio 10.0VCB
    INlink.EXE"”: 返回代码“0x460”
    Stop.
    原因:之前因为没有注意输入命令的大小写,影响了后面的编译。
    办法:删了OpenSSL目录,再来一遍。
  • 相关阅读:
    C# winform 学习(一)
    C# winform 学习(一)
    C# winform 学习(二)
    C# winform 学习(二)
    C# Winform 学习(四)
    C# Winform 学习(四)
    C# winform 学习(三)
    gcc编译动态和静态链接库
    对深拷贝与浅拷贝的再次理解(默认构造函数是浅拷贝)
    QWaitCondition(和Java的Notify机制非常相像)
  • 原文地址:https://www.cnblogs.com/Crysaty/p/5829668.html
Copyright © 2020-2023  润新知