在 Visual Studio 2012 Ultimate 中的 Windows 中使用 OpenSSL 时出错

Posted

技术标签:

【中文标题】在 Visual Studio 2012 Ultimate 中的 Windows 中使用 OpenSSL 时出错【英文标题】:Error using OpenSSL in Windows in Visual Studio 2012 Ultimate 【发布时间】:2012-10-18 09:04:42 【问题描述】:

我已经为http://gnuwin32.sourceforge.net/packages/openssl.htm 的开发人员安装了openssl。然后,我将包含文件夹中的文件复制到 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include 文件夹中。我将 lib 文件夹中的文件复制到 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib 文件夹中。然后,我将库名称放入项目属性->链接器->输入->附加依赖项。当我运行程序时,它崩溃了。我该如何解决这个问题?

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>

#include <openssl/pem.h>

#include <openssl/err.h>

#include <openssl/pkcs12.h>

/* Simple PKCS#12 file reader */

unsigned char *getValue( X509 *cert,int index);
unsigned char *getTckn( X509 *cert);
unsigned char *getRelease( X509 *cert);
unsigned char *getNameSurname( X509 *cert);
unsigned char *getCity( X509 *cert);
unsigned char *getUserType( X509 *cert);

int main(int argc, char **argv) 

    FILE *fp;

    EVP_PKEY *pkey;

    X509 *cert;

    STACK_OF(X509) *ca = NULL;

    PKCS12 *p12;



    const char* fileName = "C:/Users/sercan/Desktop/EBA/eba.p12";
    fprintf(stderr, "Error", fileName);
    OpenSSL_add_all_algorithms();
    fprintf(stderr, "Error", fileName);
    ERR_load_crypto_strings();

    if (!(fp = fopen(fileName, "rb "))) 

        fprintf(stderr, "Error opening file %s\n", argv[1]);

        exit(1);

    

    fprintf(stderr, "Error", fileName);

    p12 = d2i_PKCS12_fp(fp, NULL);

    fclose(fp);

    if (!p12) 

        fprintf(stderr, "Error reading PKCS#12 file\n");

        ERR_print_errors_fp(stderr);

        exit(1);

    

    if (!PKCS12_parse(p12, argv[2], &pkey, &cert, &ca)) 

        fprintf(stderr, "Error parsing PKCS#12 file\n");

        ERR_print_errors_fp(stderr);

        exit(1);

    

    PKCS12_free(p12);



    return 0;


【问题讨论】:

您是否收到任何错误消息或异常? 您遇到的链接器错误是什么? 我没有得到任何异常,它在执行 OpenSSL_add_all_algorithms() 时崩溃; 【参考方案1】:

尝试从这里下载 OpenSSL:http://slproweb.com/products/Win32OpenSSL.html 它对我来说很好。 另请阅读 README 文件,其中解释了如何相应地设置您的项目。

【讨论】:

以上是关于在 Visual Studio 2012 Ultimate 中的 Windows 中使用 OpenSSL 时出错的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2012中如何查看一个工程需要哪些dll文件???

Visual Studio 2012 与 Visual Studio 2010 (delta) [关闭]

visual studio 2012 启动出现如下错误,怎么处理

Visual Studio 2012 未能检测到 Visual Studio 2008 构建工具

Visual Studio 2010 项目到 Visual Studio 2012

Visual Studio 2012 与 Visual Studio 2005 中的小程序慢得多