贴出你的代码。估计是调用规则的问题,你用的是stdcall还是cdecl?

解决方案 »

  1.   

    如果是C的DLL,那么在DELPHI中要定义字符串为PCHAR
      

  2.   

    我是调用一个语音卡的语音初始化函数,这个函数是在一个PAS文件里,该PAS文件里就是调用DLL的函数,这是卡的驱动程序里自带的。函数原形是 
        Procedure  TVF_SetVoicei  ( no :integer; file1 : string );CDECL; external TW8VFDLL;(TW8VFDLL 就是那个DLL);
    我在程序里要设置102个语音文件(这个函数最多可设置256个语音文件);具体代码如下:
    var i:integer; s:string;
    begin
    tvf_setvoici(0,'');//前面两个要定义为空
    tvf_setvoici(1,'');//前面两个要定义为空
    for i:=2 to 52 do
     begin
      s:=extractfilepath(application.exename)+'data\sound\voic'+inttostr(i); 
      tvf_setvoici(i,s);
      s:=extractfilepath(application.exename)+'data\sound\kvoic'+inttostr(i);
      tvf_setvoici(51+i,s);
     end;
    end;
      

  3.   

    Procedure TVF_SetVoicei( no :integer; file1 : string );CDECL; external TW8VFDLL;
    把cdecl去了,不要这关键字,
    或改为stdcall试试
      

  4.   

    有没有external tw8vfdll name '函数名';