我用Delphi写了一个可执行程序,调用VC写的动态链接库,Delphi端对函数的定义如下:
Type
TParamArr = array[0..9] of PChar;
TCrePart = function(a: PChar; b:integer; c:TParamArr):integer;stdcall;
var
CrePart: TCrePart; 
VC端的定义如下:
int __stdcall CrePart(char *appName,int partType,char paramArr[10][20]);Delphi端运行代码:
  for i:=0 to PARAM_NUM do
  begin
    paramArr[i]:= '-9999';
  end;  paramArr[0]:= PChar('49');
  ...
  CrePart(appName,partType,paramArr);在VC端paramArr[0]是随机数,而不是"49",请问达人如何将paramArr传递过去?
谢谢!!!

解决方案 »

  1.   

    类型定义不匹配。函数CrePart的参数paramArr需要连续的内存地址,而这里的每个paramArr是一个pChar指针,指向的不同地址,所以,传递进去后无法取得。
    试试这样:Type
        TParamArr=array[0..9,0..19] of char;TCrePart = function(a: PChar; b:integer; c:TParamArr):integer;stdcall;paramArr:TParamArr;  for i:=0 to PARAM_NUM do
      begin
        paramArr[i]:= '-9999';
      end;
      paramArr[0]:= '49';
      
      CrePart(appName,partType,paramArr);