2011-01-21 274 views
1

我在Visual Studio 2010中編輯了一些示例代碼,使用DES進行加密和解密。出於某種原因,當我編譯代碼時,我不斷收到引用des_encrypt1()函數和des_set_key_checked()函數的這兩個LNK2019錯誤。在我的代碼中看到,我確保包含des.h文件,該文件列出了這兩個函數的定義。我是C新手,所以我不確定它是否簡單,我可以忽略,但任何幫助將不勝感激。我不確定如何在這裏正確地附加代碼,所以對不起,如果格式看起來很奇怪,但下面的粗體包含應該說#include des.h.編譯代碼時出現LNK2019錯誤

#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); 
} 
+0

extern「C」maybe? – leppie 2011-01-21 08:50:33

+0

您需要將代碼塊縮進四個空格,並且在代碼塊的起始位置上方還有一個空行。然後它會正確顯示。 – 2011-01-21 08:52:40

回答

0

如果您編譯代碼,C++,但此消息頭是C寫的,你需要將它作爲如下:

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

你需要包括OpenSSL的/

des.h
#include <openssl/des.h> 
相關問題