我新建了個mfc工程,包含了md5的c檔案,並且按照__cdecl編譯成c**,但是我在工程主對話方塊的.cpp檔案呼叫時總出現如下錯誤,用c的時候是沒有的:
error c2660: 「md5init」: 函式不接受 1 個引數
error c2660: 「md5update」: 函式不接受 3 個引數
error c2660: 「md5final」: 函式不接受 2 個引數
extern"c
";... md5init(
&context ); md5update(
&context, szinput, ninlen ); md5final( szoutput,
&context );
/*1.把函式宣告改成(md5.h中的)
*/void
md5init (md5_ctx*);
void
md5update (md5_ctx
*, unsigned
char
*, unsigned
int);
void
md5final (unsigned
char[16
], md5_ctx*);
/*2.在md5c.c右鍵 ---> 屬性 ---> c/c++ ---> 高階 ---> 呼叫約定:與工程相同(我這裡是__stdcall(/gz)),編譯為:c**。 如果呼叫約定與工程的不相同,只能用彙編呼叫了。 還有預編譯頭,我這裡為:不使用預編譯頭
*//*
3.包含標頭檔案時用extern "c"
*/extern"c
";//4.這樣就可以使用了:
md5init(
&context); md5update(
&context,
(unsigned
char
*)szname, dtlength); md5final(szhash,
&context);
**:
C 呼叫C函式
前言 以前見到extern c 這樣的語句,只是簡單地知道跟外部鏈結有關,但是沒有深刻理解它的意思。首先,為什麼要使用extern c 修飾符?c 呼叫其它語言的函式,由於編譯器生成函式的機制不一樣,所以需要經過特殊處理,才可以呼叫。呼叫c語言的函式,需要在函式宣告的地方語句extern c 如果不...
c 呼叫函式
建立c 函式時,會定義函式做什麼,然後通過呼叫函式來完成已定義的任務 當程式呼叫函式時,程式控制權會轉移給被呼叫的函式,被呼叫的函式執行已定義的任務,當函式的返回語句被執行時,或到達函式的結束括號時,會把程式控制權還給主程式 呼叫函式時,傳遞所需引數,如果函式返回乙個值,則可以儲存返回值 例如 in...
c 呼叫函式
main就是乙個函式,它是c 程式的主函式。乙個c 程式可以由乙個主函式和若干子函式組成。主函式是程式執行的開始點。由主函式呼叫子函式,子函式還可以再呼叫其它子函式。呼叫其它函式的函式稱為主調函式。被其他函式呼叫的函式稱為被調函式。乙個函式很可能既呼叫別的函式又被其它函式呼叫。函式呼叫的形式 型別說...