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);

 

 

 

转自:http://topic.csdn.net/u/20120621/08/52bc65dd-ce03-41ac-9a77-2b50012ce091.html?seed=1896487601&r=78920926#r_78920926

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值