저희가 Delphi를 이용하여 업무용 프로그램을 개발하였습니다.
Client를 설치하면 폴더는 다음과 같습니다.
C:misbin
|----------aa.exe
|----------bb.exe
dll
|----------aa.dll
|----------bb.dll
aa.exe는 aa.dll를 이용하게 되어 있습니다.
문제는 windows98에서는 잘 실행이 되는데 이 프로그램을 windows Nt에서
실행하면 aa.dll를 찾을 수 없다는 에러 메세지를 뿌리고 실행을 중지합니다.
아래 부분은 DLL 사용 부분입니다.
procedure TGAXFMAIN.N31Click(Sender: TObject);
var LibHandle: THandle;
ShowPOS :TShowPOS;
begin
LibHandle := LoadLibrary('..dllaa.dll');
try
if LibHandle = HINSTANCE_ERROR then
raise EDLLLoadError.Create('Unable to Load DLL');
@ShowPOS := GetProcAddress(LibHandle,'ShowPOS');
if not (@ShowPOS = nil ) then
// ShowPOS (ParamStr(1),ParamStr(2))
ShowPOS (Edit1.Text, EditPassWord.Text)
else
ShowMessage(IntToStr(GetLastError));
finally
// FreeLibrary(LibHandle);
end;
않다면 할 수 없겠죠.
아래를 보니까 loadlibrary에서 상위폴더 dll에서 dll파일을
가져오는 것으로 되어있는데 현재 폴더가 c:misbin으로 되어
있지 않은 것같네요.
아마 시스템별로 다를 겁니다. 이럴때는
extractfilepath(application.exename)하여 현 exe파일이
있는 폴더를 정확이 알아내어 처리를 하는 것이 좋을 듯합니다.
그럼 이만.
이윤오 께서 말씀하시기를...
> 저희가 Delphi를 이용하여 업무용 프로그램을 개발하였습니다.
> Client를 설치하면 폴더는 다음과 같습니다.
>
> C:misbin
> |----------aa.exe
> |----------bb.exe
> dll
> |----------aa.dll
> |----------bb.dll
>
> aa.exe는 aa.dll를 이용하게 되어 있습니다.
>
> 문제는 windows98에서는 잘 실행이 되는데 이 프로그램을 windows Nt에서
> 실행하면 aa.dll를 찾을 수 없다는 에러 메세지를 뿌리고 실행을 중지합니다.
>
> 아래 부분은 DLL 사용 부분입니다.
>
> procedure TGAXFMAIN.N31Click(Sender: TObject);
> var LibHandle: THandle;
> ShowPOS :TShowPOS;
> begin
> LibHandle := LoadLibrary('..dllaa.dll');
> try
> if LibHandle = HINSTANCE_ERROR then
> raise EDLLLoadError.Create('Unable to Load DLL');
> @ShowPOS := GetProcAddress(LibHandle,'ShowPOS');
>
> if not (@ShowPOS = nil ) then
> // ShowPOS (ParamStr(1),ParamStr(2))
> ShowPOS (Edit1.Text, EditPassWord.Text)
> else
> ShowMessage(IntToStr(GetLastError));
> finally
> // FreeLibrary(LibHandle);
> end;
>