用d写的一个dll函数,参数有4个,integer,double,pchar,pchar,最后一个参数必须是传址的,因为要返回东西,现在在d中调用测试成功,但在vba中测试如果参数不定义成ByVal或调用使用变量时结果就是乱码,数值也错误.我要怎么调用才行啊,如果要改dll该怎么改?
function f_Trade(FType:Integer;FCode:PChar;sInMsg:PChar;sOutMsg:PChar):Integer;stdcall;export;

解决方案 »

  1.   

    这个dll是做为接口的,也已经定义好了.其他类型没试过.
      

  2.   

    你的参数中有3个pchar一个integer,是不是写错了
      

  3.   

    OUT参数要在EXE中分配地址空间,即VB中要分配好空间,并传入被分配的长度,而DLL中只写那段内存参考WINAPI的做法,比如GetWindowText
      

  4.   

    function f_Trade(FType:Integer;FCode:PChar;sInMsg:PChar;var sOutMsg:PChar):Integer;stdcall;export;
      

  5.   

    做过这方面的,用的是vb3,对于integer和double类型在dll的参数类型前需家var,而char前面则不要加var
    例如:
    function f_Trade(var param1:Integer;var param2:Double;param3:PChar;param4:PChar):Integer;stdcall;export;
      

  6.   

    关注中。
    以前也遇到类似情况,只好写两个接口,一个供delphi调用,一个供VB调用。