C++调用C函数
我新建了个MFC工程,包含了MD5的C文件,并且按照__cdecl编译成C代码,但是我在工程主对话框的.cpp文件调用时总出现如下错误,用C的时候是没有的:
error C2660: “MD5Init”: 函数不接受 1 个参数
error C2660: “MD5Update”: 函数不接受 3 个参数
error C2660: “MD5Final”: 函数不接受 2 个参数
extern "C"{ #include "md5.h"};
... 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"{ #include "md5.h"};
//4.这样就可以使用了: MD5Init(&context); MD5Update(&context, (unsigned char *)szName, dtLength); MD5Final(szHash, &context);