不敢说自己是老鸟, 但是用Delphi也这么多年了
最近总在做异构程序的接口工作
却发现Delphi(BCB也一样)越来越操蛋了, 背地里做了太多的自以为是的东西, 
我觉着我是越来越不懂Delphi了

解决方案 »

  1.   

    说个简单的例子 DelphiXE2 与 VS2008.Net dll进行转接
    function ClickSvc(var Param: Integer):Integer;implementationfunction ClickSvc(var Param: Integer):Integer;
    var
        WSIServer: MIVCServiceSoap;
    begin
      ShowMessage(IntToStr(Param));
      WSIServer:= GetMIVCServiceSoap(True, '');
      Result:= WSIServer.Click(Param);
    end;
    [DllImport("LibSTFAY.dll", CallingConvention=CallingConvention.Cdecl)]
    static extern int ClickSvc(int param);
    参数居然接收的有问题
      

  2.   

    上面打错了 函数定义是这样
    function ClickSvc(Param: Integer):Integer;
      

  3.   

    DELPHI和VC参数入栈顺序不同。
      

  4.   

    delphi的函数默认调用约定是pascal,你看下你dll函数的调用约定,可能为cdecl或者stdcall.
      

  5.   

    不知道楼主怎么看调用约定,是否熟悉Delphi的默认调用约定是什么,入栈顺序和清栈工作
      

  6.   

    delphi的函数默认调用约定是register
      

  7.   

    很早以前的webservice跨语言互通,就发现xml的“标准”其实与java的“一次编译到处运行”一样,只是商业噱头而已