2011-01-21 3 views
1

J'ai un exemple de code que je modifiais dans Visual Studio 2010 pour crypter et décrypter à l'aide de DES. Pour une raison quelconque, lorsque je compile le code, je continue d'obtenir ces deux erreurs LNK2019 qui font référence à la fonction des_encrypt1() et à la fonction des_set_key_checked(). Comme vu dans mon code, j'ai veillé à inclure le fichier des.h et ce fichier répertorie les définitions de ces deux fonctions. Je suis nouveau à C donc je ne suis pas sûr si c'est quelque chose de simple que je néglige mais toute aide serait grandement appréciée. Je ne suis pas sûr de savoir comment attacher correctement le code ici, donc désolé si le format semble bizarre, mais l'inclusion en gras ci-dessous devrait dire #include des.h.erreur LNK2019 lors de la compilation du code

#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" peut-être? – leppie

+0

Vous devez mettre en retrait le bloc de code de quatre espaces et également avoir une ligne vide au-dessus du début du bloc de code. Ensuite, il sera affiché correctement. –

Répondre

0

Si vous compilez le code en C++, mais l'en-tête est écrit C, vous devez inclure comme suit:

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

Merci pour votre aide. Cela a définitivement éliminé les erreurs LNK, mais maintenant il est dit que des_key_scheduler est un identificateur non déclaré et qu'il croit qu'il manque un ';' avant la clé (comme dans des_key_schedule key;) des idées? – Joshua

+1

vous devriez probablement utiliser 'struct des_key_schedule key;' pas seulement 'des_key_schedule key;' – nos

+0

Merci. Cela a supprimé une grande partie des messages d'identificateur non déclarés pour 'clé' mais maintenant il se plaint que cette clé utilise une structure non définie des_key_schedule. – Joshua

0

vous devez inclure des.h de OpenSSL/

#include <openssl/des.h> 
Questions connexes