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 데이터를 두개를 매개변수로 보내면 계산은 잘되는데
구조체는 계속 안되네여 ㅠㅠㅠㅠㅠㅠ
구조체 포인터로도 바꺼보고 삽질 몇시간째 하고있습니다ㅠㅠ
고수분들 도와주세요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
C로 짠 dll 이면 아래 부분이 틀린것 같네요
function aafunc(ab:aa):aa;stdcall;external'dll1';
=> stdcall 을 cdecl로 변경
=> function aafunc(ab:aa):aa;cdecl;external'dll1.dll';