VBA에서 다음과 같이 정의
Declare Sub MAIN2 Lib "C:\WORK\dlltest.dll" (ByRef a As Long)
Sub MyMacros()
Dim ccc1(5) As Long
ccc1(0) = 10
ccc1(1) = 20
ccc1(2) = 30
ccc1(3) = 40
ccc1(4) = 50
ccc1(5) = 60
MAIN2 (ccc1(0))
end Sub
===================================
DELPHI에서 다음과 같이 정의(dlltest.dll)
library DllTest;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
{$R *.res}
procedure MAIN2(var a:array of integer);stdcall;
begin
showmessage(inttostr(a[0]));
showmessage(inttostr(a[1]));
showmessage(inttostr(a[2]));
showmessage(inttostr(a[3]));
end;
=====================================
이렇게 delphi에서 dll을 만들고 vba에서 위 코드를 실행하면 첫번째는 10을 잘찍는데, 그다음부터는 가비지가 들어가 있습니다.
length(a)로 검토해봐도 길이가 0네요;;
vb에서 delphi로만든 dll에 array를 어떻게 넘기는지 잘 모르겠습니다.
고수님 도와주세요!
|