Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 编译代码时出现LNK2019错误_C_Des_Lnk2019 - Fatal编程技术网

C 编译代码时出现LNK2019错误

C 编译代码时出现LNK2019错误,c,des,lnk2019,C,Des,Lnk2019,我在VisualStudio2010中编辑了一些示例代码,以使用DES进行加密和解密。出于某种原因,在编译代码时,我不断收到这两个LNK2019错误,它们引用des_encrypt1()函数和des_set_key_checked()函数。正如在代码中看到的,我确保包含des.h文件,该文件列出了这两个函数的定义。我是C语言的新手,所以我不确定这是否是我忽略的简单的东西,但如果有任何帮助,我将不胜感激。我不知道如何正确地在这里附加代码,如果格式看起来很奇怪,那么很抱歉,下面粗体的include应

我在VisualStudio2010中编辑了一些示例代码,以使用DES进行加密和解密。出于某种原因,在编译代码时,我不断收到这两个LNK2019错误,它们引用des_encrypt1()函数和des_set_key_checked()函数。正如在代码中看到的,我确保包含des.h文件,该文件列出了这两个函数的定义。我是C语言的新手,所以我不确定这是否是我忽略的简单的东西,但如果有任何帮助,我将不胜感激。我不知道如何正确地在这里附加代码,如果格式看起来很奇怪,那么很抱歉,下面粗体的include应该是#include des.h

#include <des.h>


#define ENC 1
#define DEC 0

//extern des_encrypt1(DES_LONG *data,DES_key_schedule *ks, int enc);

//void des_set_key_checked(const_des_block *key, des_key_schedule *schedule)



int main()
{

int k;
long    in[2];
static unsigned char cbc_key[8] = {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
des_key_schedule key;
//struct timeval start, end;
//double t1, t2, t3, t4;

if ((k = des_set_key_checked(&cbc_key,key)) != 0)
    printf("\nkey error\n");

in[0] = 3212314;
in[1] = 1231233;

printf("DES Clear Text: %ld%ld\n",in[0],in[1]);
//gettimeofday(&start, NULL);
//t1=start.tv_sec+(start.tv_usec/1000000.0);
des_encrypt1(in,key,ENC);
//gettimeofday(&end, NULL);
//t2=end.tv_sec+(end.tv_usec/1000000.0);
//printf("Time for Encryption\n", t2-t1);

printf("DES Encryption: %u%u\n",in[0],in[1]);
//gettimeofday(&start, NULL);
//t3=start.tv_sec+(start.tv_usec/1000000.0);
des_encrypt1(in,key,DEC);
//gettimeofday(&end, NULL);
//t4=end.tv_sec+(end.tv_usec/1000000.0);
//printf("Time for Decryption\n", t4-t3);
}
#包括
#定义ENC 1
#定义12月0日
//外部加密1(数据长*数据,密钥调度*ks,内部加密);
//无效设置键已选中(常数块*键,设置键*时间表)
int main()
{
int k;
长in[2];
静态无符号字符cbc_键[8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
des_key_schedule key;
//结构timeval开始、结束;
//双t1,t2,t3,t4;
如果((k=des_set_key_checked(&cbc_key,key))!=0)
printf(“\nkey错误\n”);
in[0]=3212314;
in[1]=1233;
printf(“DES明文:%ld%ld\n”,在[0],在[1]);
//gettimeofday(&start,NULL);
//t1=start.tv_sec+(start.tv_usec/1000000.0);
des_encrypt1(in、key、ENC);
//gettimeofday(&end,NULL);
//t2=结束时的电视秒+(结束时的电视秒/1000000.0);
//printf(“加密时间”,t2-t1);
printf(“DES加密:%u%u\n”,在[0],在[1]);
//gettimeofday(&start,NULL);
//t3=开始.tv_秒+(开始.tv_秒/1000000.0);
des_encrypt1(in,key,DEC);
//gettimeofday(&end,NULL);
//t4=结束电视节目集+(结束电视节目集/1000000.0);
//printf(“解密时间”,t4-t3);
}

<代码> > p>如果您将代码编译为C++,但该头是为C编写的,则需要将其包括如下:

extern "C" {
    #include "des.h"
}

您需要包含openssl中的des.h/

#include <openssl/des.h>
#包括

您需要将代码块缩进四个空格,并且在代码块开头上方有一个空行。然后它将正确显示。谢谢您的帮助。这确实消除了LNK错误,但现在它说des_key_scheduler是一个未声明的标识符,它认为它缺少一个“;”在键之前(如des_key_schedule key;)有什么想法吗?您可能应该使用
struct des_key_schedule key不仅仅是
desu key\u schedule key谢谢。这删除了“key”的许多未声明的标识符消息,但现在它抱怨key使用的是未定义的struct des_key_schedule。实际上忽略最后一部分,我刚刚找到了修复该错误的方法。丹尼尔·罗斯和诺斯,非常感谢你们的帮助!此行(extern“C”)返回此错误(错误C2059:语法错误:“string”)有什么原因吗?