在vb中向vc的dll传递一个int值为:5,再用dll把值返回,发现就不是5了 
这是为什么, 
vc中: 
int fa(int i){ 
return i 

vb中: 
返回值
=fa(5)
 
我发现“返回值”就不等于5了. 
这是为什么?

解决方案 »

  1.   

    那你在fa函数中把i的值调试一下,看看变成什么值了。
      

  2.   

    int __stdcall fa(int i){
    return i
      

  3.   

    如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++缺省的调用方式却为__cdecl。__stdcall方式与__cdecl对函数名最终生成符号的方式不同。若采用C编译方式(在C++中需将函数声明为extern "C"),__stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionname@number;而__cdecl调用约定仅在输出函数名前面加下划线,形如_functionname.所以dll中的导出函数应写成 
    int __stdcall fa(int i){ 
        return i;
    }