2015-10-26 58 views
0

我已經成功地將openssl dev文件庫集成到了main.cpp文件中。目前包括openssl/evp.h調用'EVP_DigestFinal'沒有匹配的函數 - 在C++中使用openssl lib

我可以使用EVP_DigestInit,EVP_DigestUpdate功能沒有任何錯誤。但是,如果我嘗試調用EVP_DigestFinal,它提供了以下錯誤:

No matching function for call to 'EVP_DigestFinal' 

然而,該功能在同一個頭文件中定義,evp.h。我該怎麼做才能使用這個功能呢?感謝幫助。

相關代碼:

EVP_MD_CTX ctx; 
char ch[128]; 
int val = 128; 
EVP_DigestFinal(&ctx, ch, val); 
+0

您是否包含ssl庫與th e makefile? –

+0

我使用xcode進行開發。我已經包含了必要的庫。如果我嘗試用C語言編寫,則沒有問題。當我嘗試使用C++文件時,會出現此錯誤。我認爲應該有另一個問題。 – Shnkc

回答

1

從我找到OpenSSL.org,簽名是

int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, int *s); 

要匹配,你需要unsigned char爲第二個參數和地址的第三個參數,東西像

EVP_MD_CTX ctx; 
unsigned char ch[128]; 
_______^ 
int val = 128; 
EVP_DigestFinal(&ctx, ch, &val); 
__________________________^ 
+0

我剛剛輸錯了問題部分。我的代碼就像你上面寫的一樣。這並不影響這種情況。 – Shnkc

+0

當我使用'val'作爲'unsigned int'並進行必要的校正時,它已經奏效。 – Shnkc