delphi的dll用于其他语言编写的客户端程序时,不要使用string类型,而使用c兼容的pchar,即c中的字符指针,vb的字符串也是

解决方案 »

  1.   

    应该这样改吧:
    delphi 代码
    function bestfont(ss:PChar;ww:integer;hh:integer):integer;stdcall;//ss:string 改为 ss:PChar
    var
      lss:string;
    begin
      lss := strpas(ss);//下面的代码如要使用string类型的ss,就都改为lss吧
    ...
    ...
    end;vb代码
    Private Declare Function bestfont Lib "project1.dll" (ByVal ss As String,ByVal ww As Long, ByVal hh As Long) As Long
      

  2.   

    不错,写DLL、COM时,要不就用PChar,要不就加上ShareMem让Delphi帮你管理内存。
      

  3.   

    STRING要用PCHAR代替,并且在USES语句中要加入SHAREMEM让Delphi帮你管理内存。 
      

  4.   

    STRING要用PCHAR代替,并且在USES语句中要加入SHAREMEM让Delphi帮你管理内存(要加在第一句)。