Q&A

  • DLL 구조체 매개변수로 보낼수있나요?리턴값두요~
C로 짠 DLL에 다음 코드가 있구요

<!--CodeS-->
extern "C" __declspec(dllexport)
struct aa{
        int a;
        int b;
        int c;
};

extern "C" __declspec(dllexport)
aa aafunc(aa ab)
{        
        ab.c = ab.a + ab.b;
        return ab;
}

<!--CodeE-->


다음은 델파이로 짠코드입니다
<!--CodeS-->

type
aa=record
a:integer;
b:integer;
c:integer;
end;
...
function aafunc(ab:aa):aa;stdcall;external'dll1';

...
procedure TForm1.Button7Click(Sender: TObject);
var
ab:aa;
begin
ab.c:=0;
ab.a:=strtoint(edit1.Text);
ab.b:=strtoint(edit2.Text);

aafunc(ab);
edit3.text:=inttostr(ab.c);

end;

<!--CodeE-->

두개의 에디트창에 입력된수를 구조체에 저장하고 DDL함수를 불러
구조체 멤버끼리 덧셈을 해서 그 결과를 ab.c에 저장하고 ab구조체를 반환하여
델파이에서 결과를 에디트창에 출력하는건데요

함수는 호출이 되긴하는데 함수에서 계산이 되는건지 모르겠네여
계속 결과가 안뜨네요 구조체를 DLL함수에 매개변수로 보낼수 없나요?
아니면 계산은 되는데 구조체를 반환 할 수가 없는 것인가요?

integer 데이터를 두개를 매개변수로 보내면 계산은 잘되는데
구조체는 계속 안되네여 ㅠㅠㅠㅠㅠㅠ

구조체 포인터로도 바꺼보고 삽질 몇시간째 하고있습니다ㅠㅠ
고수분들 도와주세요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
1  COMMENTS
  • Profile
    김운필 2006.12.04 23:52
    네 당연히 보낼수 있지요...

    C로 짠 dll 이면 아래 부분이 틀린것 같네요

    function aafunc(ab:aa):aa;stdcall;external'dll1';

    => stdcall 을 cdecl로 변경

    => function aafunc(ab:aa):aa;cdecl;external'dll1.dll';