各位兄台:
  我在用Delphi调用VC做的动态链接库时,有下面这样一个函数,目的是把Dll中的数组传给delphi,这个函数在delphi中如何调用啊?请各位赐教,不胜感激!!
extern "C" __declspec(dllexport) int outparameter(int *test,int length) 
{
    for(int i=0;i<length;i++)
test[i]=m_c[i]; return 1;
} 我在Delphi中申明如下:
interface
  function outparameter(test:pinteger):integer;cdecl;implementation
  function outparameter;external 'MaxMin.DLL' name 'outparameter';调用的地方如下:
procedure TForm1.Button1Click(Sender: TObject);
var  a:array[1..2] of integer;
begin  outparameter(a);
  showmessage(inttostr(a[0]));
end;可编译就通不过,麻烦各位给小弟看看啊?谢谢

解决方案 »

  1.   

    VC的调用方式默认的是__cdecl*
    而Delphi的默认调用是__stdcall
    所以会出问题.解决办法:
    在VC写dll的时候,在Project->Setting中的C/C++标签页里面,
    Category选择code generation,然后在Calling convention里
    面选__stdcall就可以了.
      

  2.   

    我也有一个调用COM接口DLL的问题,高手去看看啊
    http://community.csdn.net/Expert/topic/4200/4200306.xml?temp=.801861
      

  3.   

    调用方式没有问题,只是数组参数是怎么传递的,我在编译时,出现在系统integer和unit中的integer不匹配,这是怎么回事啊?麻烦你们再给看看
      

  4.   

    unit 是unsign int,
    对应Delphi里的是Cardinal类型.
      

  5.   

    function outparameter(var test:integer;Length:Integer):integer;cdecl;