Re: New Era : Embedding C problem
Posted in 1998
John, > I have a dll written in New Era2.12 with embedded C in it (VC1.51). > I am trying to convert this to New Era 3.10 with embedded VC5.0. [snip] Basically, forget all the "__declspec( dllexport ) WINAPI " nonsense, you don't need it. Corrected code attatched. Enjoy! David. ______________________________________ David C. Harrison DCH Software Limited E-Mail: dch@dchsoftware.co.uk Web: http://www.dchsoftware.co.uk #### .dll code ##################################################### BEGIN_C #include <windows.h> void encrypt(char *buffer,char *key,char *text) { int key_len, p, c_char, key_pos, text_len; key_len=strlen(key); text_len=strlen(text); for(p=0,key_pos=0;p<text_len;++p,++key_pos) { if(key_pos==key_len) key_pos=0; c_char=text[p] ^ key[key_pos]; buffer[(p*2)]='A'+(c_char/26); buffer[(p*2)+1]='A'+(c_char%26); } buffer[text_len*2]=0; } void decrypt(char *buffer,char *key,char *text) { int key_len, p, c_char, key_pos, text_len; key_len=strlen(key); text_len=strlen(text); if(strstr(text,".DBF")==NULL) { for(p=0,key_pos=0;(p*2)<text_len;++p,++key_pos) { if(key_pos==key_len) key_pos=0; c_char=((text[(p*2)]-'A')*26)+(text[(p*2+1)]-'A'); buffer[p]=c_char^ key[key_pos]; } buffer[p]=0; } else strcpy(buffer,text); } END_C FUNCTION n_encrypt(l_key CHAR(*), f_path CHAR(*)) RETURNING CHAR(*) VARIABLE buffer CHAR(*), i integer LET buffer=" " FOR i= 1 TO (LENGTH(f_path)*2)-1 LET buffer= buffer, " " END FOR BEGIN_C encrypt(buffer,l_key,f_path); END_C RETURN buffer END FUNCTION FUNCTION n_decrypt(l_key CHAR(*), f_path CHAR(*)) RETURNING CHAR(*) VARIABLE buffer CHAR(*), i integer LET buffer=" " FOR i= 1 TO (LENGTH(f_path)) LET buffer= buffer, " " END FOR BEGIN_C decrypt(buffer,l_key,f_path); END_C RETURN buffer END FUNCTION #### test code ##################################################### MAIN VARIABLE buffer CHAR(*) LET buffer= n_encrypt("ABCDEF", "123456") DISPLAY buffer LET buffer= n_decrypt("ABCDEF", buffer) DISPLAY buffer RETURN END MAIN ##################################################################