안녕하셔요.
대답없는...
오늘도 아무도 없는 파견지에서 혼자서 뺑이 돌다돌다 어지러버 여쭙니다.
customer라는 dll프로젝트에 폼1 unit을 uses시켜두었습니다.
폼1의 unit에는 그 폼을 여는 아래의 코딩이 있습니다.
****************************************************************************
procedure 폼1_OpenForm(ADOConnection : TADOConnection; App : TApplication); strcall;
중간생략
procedure 폼1_OpenForm(ADOConnection : TADOConnection; App : TApplication);
begin
App.CreateForm(T폼1, 폼1);
폼1.ADOTable1.Connection := ADOConnection;
폼1.ADOTable1.Active := True;
폼1.Show;
end;
****************************************************************************
이 프로시저를 사용하기 위한 메인폼은
****************************************************************************
....생략
public
{ Public declarations }
procedure OpenForm(DllName : string);
end;
type
TOpenFormProc = procedure(ADOConnection : TADOConnection; App : TApplication) ; Stdcall;
var
메인폼1: T메인폼1;
implementation
uses 데이타모듈;
{$R *.DFM}
procedure T메인폼1.OpenForm(DllName : string);
var
H : THandle;
OpenFormProc : TOpenFormProc;
begin
H := LoadLibrary(PChar(DllName));
.
dll을 못찾을때 에러문장..
.
@OpenFormProc := GetProcAddress(H, '폼1_OpenForm');
.
프로시저를 못찾을때 에러문장발생..
.
OpenFormProc(dfmkdt.ADOConnection, Application);
FreeLibrary(H);
end;
procedure Tfmkdt001.Button4Click(Sender: TObject);
begin
OpenForm('customer.dll');
end;
라고 했습니다.
1. 실행시키면 프로시저를 못찾는다고 에러를 냅니다.
2. 글구 dll의 위치가 C:ab이고, 실행파일 위치가 C:a일때
dll파일 위치를 '..customer.dll'이라고 하면 dll파일을 못찾습니다.
그래서 아예 dll을 a로 옮겼더니 그부분을 넘어 가더라구요...경로지정도 알고싶습니다.
_ _'''
> 안녕하셔요.
> 대답없는...
> 오늘도 아무도 없는 파견지에서 혼자서 뺑이 돌다돌다 어지러버 여쭙니다.
>
> customer라는 dll프로젝트에 폼1 unit을 uses시켜두었습니다.
> 폼1의 unit에는 그 폼을 여는 아래의 코딩이 있습니다.
>
> ****************************************************************************
> procedure 폼1_OpenForm(ADOConnection : TADOConnection; App : TApplication); strcall;
>
> 중간생략
>
> procedure 폼1_OpenForm(ADOConnection : TADOConnection; App : TApplication);
> begin
> App.CreateForm(T폼1, 폼1);
>
> 폼1.ADOTable1.Connection := ADOConnection;
> 폼1.ADOTable1.Active := True;
> 폼1.Show;
> end;
> ****************************************************************************
>
> 이 프로시저를 사용하기 위한 메인폼은
> ****************************************************************************
> ....생략
>
> public
> { Public declarations }
> procedure OpenForm(DllName : string);
>
> end;
> type
> TOpenFormProc = procedure(ADOConnection : TADOConnection; App : TApplication) ; Stdcall;
>
> var
> 메인폼1: T메인폼1;
>
> implementation
>
> uses 데이타모듈;
>
> {$R *.DFM}
> procedure T메인폼1.OpenForm(DllName : string);
> var
> H : THandle;
> OpenFormProc : TOpenFormProc;
> begin
> H := LoadLibrary(PChar(DllName));
> .
> dll을 못찾을때 에러문장..
> .
> @OpenFormProc := GetProcAddress(H, '폼1_OpenForm');
> .
> 프로시저를 못찾을때 에러문장발생..
> .
> OpenFormProc(dfmkdt.ADOConnection, Application);
> FreeLibrary(H);
> end;
>
> procedure Tfmkdt001.Button4Click(Sender: TObject);
> begin
> OpenForm('customer.dll');
> end;
>
> 라고 했습니다.
> 1. 실행시키면 프로시저를 못찾는다고 에러를 냅니다.
>
> 2. 글구 dll의 위치가 C:ab이고, 실행파일 위치가 C:a일때
> dll파일 위치를 '..customer.dll'이라고 하면 dll파일을 못찾습니다.
> 그래서 아예 dll을 a로 옮겼더니 그부분을 넘어 가더라구요...경로지정도 알고싶습니다.
> _ _'''
1.폼1_OpenForm();을 export 시키셨나요? dpr에서요..
2.
dll은 실행화일이 있는곳,시스템,C: 중 어딘가에 있어야 한다구 알구있는데요...
맞나 ^^?