您的位置:首页 > 编程语言 > C语言/C++

C++调用C函数

2012-06-21 09:48 127 查看
我新建了个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);

转自:http://topic.csdn.net/u/20120621/08/52bc65dd-ce03-41ac-9a77-2b50012ce091.html?seed=1896487601&r=78920926#r_78920926
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: