C 呼叫C函式

2022-08-31 08:00:08 字數 990 閱讀 2723

我新建了個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 程式可以由乙個主函式和若干子函式組成。主函式是程式執行的開始點。由主函式呼叫子函式,子函式還可以再呼叫其它子函式。呼叫其它函式的函式稱為主調函式。被其他函式呼叫的函式稱為被調函式。乙個函式很可能既呼叫別的函式又被其它函式呼叫。函式呼叫的形式 型別說...