델파이 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 델파이에서 사용하기
1. component > import component 클릭
2. Import a Type Library 선택 Next~~~~
3. 해당 DLL 찾아서 Add 그전에! 해당 dll 등록한다... cmd창에서 regsvr32 ~~~~~
4. 알아서 선택 후 Next
5. Create Unit 으로 생성
6. 해당 생성된 Unit 파일을 해당 프로젝트 다른이름 저장 후 유닛 연결 후 사용한다.
'Delphi Tip > 파일' 카테고리의 다른 글
DLL(Dynamic-link library)란 (1) (0) | 2023.06.21 |
---|---|
REST 기반 파일 업로드와 다운로드 구현하기 (0) | 2021.10.09 |
파일 경로/이름/확장자 등 알아내기 (0) | 2021.10.07 |
Unix파일 (.sam) 델파이에서 읽기 방법 (0) | 2021.10.06 |
텍스트 파일읽기 비교 (1) | 2021.10.05 |
댓글