본문 바로가기
Delphi Tip/파일

델파이 DLL 사용 방법

by MonoSoft 2021. 10. 8.
728x90
반응형

델파이 DLL 사용 방법

 

 

1. DLL 생성 방법

  File > New > Other > Delphi Projects > DLL Wizard 선택하면 기본 DLL 프로젝트가 생성됨.

 

2.DLL 호출 방법

  => 동적사용 

procedure TForm1.Button1Click(Sender: TObject);

type

  TFunc = function(s:string) : string; //dll 함수 설정

var

  Handle : THandle;

  MyFunc : TFunc;

begin

  Handle := LoadLibrary('파일명.dll');

  if Handle <> 0 then

  begin

    @MyFunc := GetProcAddress(Handle, 'dll함수명');

    if @MyFunc <> nil then

    begin

      //DLL 함수 사용

    end

    else

      //DLL 없음 못찾겠음

  end

  else

    ShowMessage('DLL 없음');

end;

 

=> 정적 사용 

- 선언

  function 함수명(s:string) : string; external '파일명.dll' name '함수명'; 

- 사용

  procedure TForm1.Button1Click(Sender: TObject);

  begin

    ShowMessage(dll함수실행);

  end;

 

3. c 언어로 만든 DLL 델파이에서 호출

=========================c 언어

char    szTemp[50];

extern "C"

{

    // DLL 문자열 인수 입력

    BOOL PASCAL EXPORT SetStr(char *pszSend)

    {

        sprintf(szTemp, "%s", pszSend);

        return true;

    }

    // DLL 문자열 인수로 문자열 넘겨주기

    BOOL PASCAL EXPORT GetStr(char *pszSend)

    {

        sprintf(pszSend, "%s + %s", szTemp , szTemp);

        return true;

    }

}

===============================delphi 

// DLL에서 문자열을 넘겨주고 받기 위해서는 PChar형을 쓴다.

function SetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';

function GetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';

procedure TfrmMain.btnTestClick(Sender: TObject);

var

  nNo:Integer;

  psStr:PChar;

  sString:String;

  nWork:Integer;

begin

  // 문자열 초기화

  psStr := Nil;

  // 문자열 사이즈 잡기

  psStr := AllocMem(50);

  sString := edtStr.Text;

  // String형을 PChar형으로 캐스트

  psStr := PChar(sString);

  // dll에 문자열 입력

  SetStr(psStr);

  // 문자열 초기화

  psStr := Nil;

  // 문자열 사이즈 잡기

  psStr := AllocMem(50);

  // dll에서 문자열 가져오기

  GetStr(psStr);

  // PChar형에서 String형으로 바꾸기

  sString := StrPas(psStr);

  lblStr.Caption := sString;

  if psStr <> Nil then FreeMem(psStr);

end;

 

4. c# 만든 DLL 델파이에서 사용하기

 

https://youtu.be/ZutlhThQJ5s

1. component > import component 클릭

2. Import a Type Library  선택 Next~~~~

3. 해당 DLL 찾아서 Add 그전에! 해당 dll 등록한다...  cmd창에서 regsvr32 ~~~~~

4. 알아서 선택 후 Next

5. Create Unit 으로 생성

6. 해당 생성된 Unit 파일을 해당 프로젝트 다른이름 저장 후 유닛 연결 후 사용한다.

728x90
반응형

댓글