函数声明是否正确,主要是压栈方式。
C的缺省压栈方式是cdecl,而Delphi这是register,你不妨把Delphi的函数声明和C地函数声明都贴出来看看。

解决方案 »

  1.   

    Delphi 调用方式声明为 Stdcall 试一试。
      

  2.   

    我试过,即使vc中的ctrl类函数只返回一个值,
        如: 
        long C1ctrl::r()
        {
            return 1222;     }
       结果在中调用此函数结果不正确.
       我的调用方法如下:
        控件名为:c1    var 
          ret:integer;
       
       ret:=c1.r();   调试结果为很大的一个值       
       
      

  3.   

    我没用过delphi,能否说得详细点?
      

  4.   

    我可能没说清楚
     
     如果我把返回值放在参数表中,运行结果是正确的,
       如: 
       void CMyAcxCtrl::f1(strTmp inStr,long reply) 
       { 
             .....
             reply:=122;
        }
       在delphi 下测试没问题.而一旦将采用以下方式:
       long CMyAcxCtrl::f1(strTmp inStr) 
       { 
             ...... 
             return 122;
        }   在delphi 下测试
       
      var
       ret:Longint;  
     
       ..........   ret:= myacx1.f1('111');
      
       结果不对;而且我试过其他类型的返回值都不对.
       束手无措.