使用#将变量包含在空函数C和#x2B中+; 我在15年的中断之后回到C++,一直在努力记住如何使变量/函数从空函数中包含到空洞函数中。目前,我使用的是单个.cpp,但将根据需要将函数导出到单独的.cpp以进行调用
我有以下资料:使用#将变量包含在空函数C和#x2B中+; 我在15年的中断之后回到C++,一直在努力记住如何使变量/函数从空函数中包含到空洞函数中。目前,我使用的是单个.cpp,但将根据需要将函数导出到单独的.cpp以进行调用,c++,function,encryption,openssl,C++,Function,Encryption,Openssl,我有以下资料: // C++ #include <stdio.h> #include <iostream> #include <math.h> #include <errno.h> #include <cstring> // OpenSSL #include <evp.h> #include <aes.h> #include <rand.h> #include <err.h> #incl
// C++
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <errno.h>
#include <cstring>
// OpenSSL
#include <evp.h>
#include <aes.h>
#include <rand.h>
#include <err.h>
#include <buffer.h>
using namespace std;
typedef struct _cipher_params_t {
unsigned char *key;
unsigned char *iv;
unsigned int encrypt;
const EVP_CIPHER *cipher_type;
}cipher_params_t;
我正在使用Visual Studio 2017 Enterprise和openSSL。有什么建议吗?链路配置参数中是否存在错误陈述的参数
非常感谢您的任何建议!
谢谢
丽塔 当设置Visual Studio项目以使用OpenSSL SDK构建时,您应该执行以下操作(如果Visual Studio设置的名称不太准确,请原谅;我前面没有运行dev Studio,所以我是从内存中执行这些操作的):
libeay32.lib
添加到库文件集(通过继承,应该已经包括kernel32.lib、user32.lib等)。如果您还使用SSL_xxx API,则该列表中还需要ssleay32.lib
#include <openssl/evp.h>
#include <openssl/sha.h>
#include <openssl/aes.h>
... etc ...
#包括
#包括
#包括
等
OpenSSL头文件经常(阅读:保证会发生)包含SDK中的其他头文件,这些头文件的名称完全相同。因此,您必须将其设置为以相同的方式为您(以及他们)工作。按照我提供的说明,它应该可以工作
在实际运行程序时,我将确保生成平台的
libeay32.dll
和ssleay32.dll
位于正确的路径或当前工作目录的任务留给您。确保OpenSSLDir/bin文件夹位于我们的路径(或Visual Studio调试器的启动设置)中是最简单的方法。stackoverflow的一般经验法则是,如果您遇到错误(编译时或运行时)将完整的错误消息复制并粘贴到您的问题中。EVP_CIPHER和EVP_CIPHER_CTX实际上是在中定义的,并且该文件包含在中。不确定为什么这对您不起作用。您可以尝试在OpenSSL includes顶部的代码中添加一行#include
。但不确定这是否有帮助。希望您得到答案。您可以在C++中不需要<代码> TyBuffsStult。看起来,在C.写这样的文件可能会更快乐。任何股票OpenSSL SDK构建都有一个名为<代码>的文件夹。该文件夹应该添加到您的项目的包含路径中(因此源代码文件编译)。在该文件夹中是文件夹链openssl/*
。我知道这看起来很混乱,但它可以确保您获得所需的标题。所有openssl标题都应该#include
这一点很重要,因为在这些标题中包含其他标题,其中一些标题也在openssl include文件夹中,并使用相同的名称e、 谢谢大家!我就快到了。只要试着找到cleanup()在哪里,我就可以去了。我的工作电脑上有这个功能(不同版本的openSSL)但我在努力与我的家庭电脑。@ NeilButterworth,我会更好地写在C,但我被指示使用C++和EVP/As。非常感谢@ WoZoCurig!使用最新版本的SDK似乎在VC2017中有点不同。我几乎就在那里。一旦我把OpenSSL的限定符添加到它的包含中。查找大多数项。我仍在查找cleanup()。
#include <openssl/evp.h>
#include <openssl/sha.h>
#include <openssl/aes.h>
... etc ...