VC中调用DLL的函数参数有关问题

VC中调用DLL的函数参数问题
函数原型:int  MF_Getsnr (unsigned char mode, unsigned char halt, unsigned char *snr,unsigned char *value);
snr,           返回的1个字节
value          返回的4个字节
这一个函数在VC中怎么调用啊?

------解决方案--------------------
unsigned char mode;
unsigned char halt;
unsigned char snr;
unsigned char value[4];

MF_Getsnr (mode, halt, &snr, value);
------解决方案--------------------
要对函数返回值进行检查
hDLL=LoadLibrary("mi.dll");//加载动态链接库mi.dll文件;
if (NULL == hDll)
   return;
MF_Getsnr=(pMF_Getsnr)GetProcAddress(hDLL,"MF_Getsnr");
if (NULL == MF_Getsnr)
   return; 
pMF_Getsnr(mode,halt,&snr,value); //前面那个p去掉!
------解决方案--------------------
需要确认DLL的开发环境,是VC吗?开发环境的源代码到底把接口定义成什么调用方式。

Windows的API 除特殊情况外,一般使用的是stdcall约定。

1)从cdecl改成stdcall后,你的程序运行不报ESP错误,说明编译后的代码对栈指针处理是正确的,应该是stdcall没错。
2)你说返回值不对,但cdecl和stdcall对于int类型的返回值的处理方法都一样。那返回值不对的原因应该是传入参数的问题。