우선 델파이 IDE에서 File - New - Unit를 선택하여 새로운 유닛을 하나 만듭니다.
<<새로 만들어진 유닛>>
---------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, SysUtils;
// 다른 유닛에서 불러서 쓸 수 있도록 하기 위함.
function DOCRUZER_CreateHandle(msg:PChar; phc:PLong):Integer;stdcall;
implementation
//
// DLL에 있는 함수를 쓰기 위한 선언
//
function DOCRUZER_CreateHandle(msg:PChar; phc:PLong):Integer;stdcall;external
: 'docruzer.1.4.0.dll';
end.
---------------------------------------------------------------------------------------
이제 다른 유닛(예를들어 main.pas)에서 사용하려면 uses절에 Unit1을 선언해주면 됩니다.
단, 이 방법은 DLL을 정적으로 링크하므로 해당 DLL이 윈도 시스템 디렉토리나
실행파일이 있는 디렉토리 또는 패스로 지정된 디렉토리에 있어야 합니다.
$추신:
우리 집에도 박현정이 한명 있지요... ^^
박현정 님이 쓰신 글 :
: 원래 C로 된 DLL에 연결하는 델파이 소스입니다.
: 그런데 새로운 unit으로 함수를 옮겨서 함수를 쓰는 사람이 마치 델파이 함수처럼 느끼도록 말입니다....
:
: 함수 선언부:function DOCRUZER_CreateHandle(msg:PChar; phc:PLong):Integer;stdcall;external
: 'docruzer.1.4.0.dll';
: /* 이함수는 다음의 C함수와 연결됩니다.
: int DOCRUZER_CreateHandle(char *msg,long* hc);
: */
: var
: rc:Integer;
: hc:Longint; //handle
: msg:array[0..127] of char;
:
: rc:=DOCRUZER_CreateHandle(msg,@hc);//함수 호출부분...
:
: 이 함수의 목적은 hc의 값을 받아오는거구요...error가 발생하면 msg로 error message가 넘어온답
:
: 니다.
:
: 포인터죠...둘다...
:
: 지금 이것이 main.pas에 들어있는데...다른 unit으로 뺀다면 어케 해야되는지요?
:
: 포인터 부분이 까다로운듯....델파이를 잘몰라서..
:
: ㅋㅋ
:
:
:
:
|