Public Function boolean GetName(char  nDevice,ref char Name[],ref char Version[]) LIBRARY "ICXF.dll" ALIAS FOR "_GetName@12"你说这里出错我就说这里吧! 如果是输出参数就是 ref string Name, ref string Version 就可以了。调用是需要多少空间,看dll文档说明, PB分配空间就是 String Name = space(30)我一直这么用,现在写的webService 接口也这么用没有任何问题! 

解决方案 »

  1.   

    我也按你说的试过了,声明如下:
    Public Function boolean GetName(int nDevice,ref string Name,ref string Version) LIBRARY "ICXF.dll" ALIAS FOR "_GetName@12"string name,Version
    name=space(30)
    version=space(30)
    if GetName(1,Name,Version) then 
      messagebox("",Name)
    else
      messagebox("系统提示","GetRecord失败!")
    end if  
      

  2.   


    没有任何提示的错误,返回值为false
      

  3.   


    设备厂商说不是他们的问题,说DELPHI能调用。晕啊
      

  4.   

    设备厂商说不是他们的问题,说DELPHI能调用。晕啊 这不能说明PB能调用! 是我写的动态库一般会给出别的语言的调用样例! 
      

  5.   

    原来是delphi中的int与PB中的int最大值不一样的