안녕하세요...델파이를 사랑하는 개발자입니다...
저희 회사에서 새로 구입할 클라이언트PC를 XP로 한다기에 지금 사용하고 있는 app을 xp에서 돌려 봤는데 프로그램 초기화 에러가 나더라구요...그래서 xp에 델5를 xp에 깔고 당장 작업 들어갔는데...도저히 에러를 잡을 수가 없어서 이렇게 고수님들께 조언을 구하고자 합니다...
APP은 델5, 오라클8.0.5를 사용해서 2tier로 개발 되었고 일반적인 MDI인데 child는 모두 dll로 작성되었습니다...
처음엔 xxxx.dll을 찾을 수가 없다라고 에러가 나더군여...저희가 dll에서 함수를 갖다가 쓰는 선언문에서 dll이름의 확장자(.dll)을 안주었었거든요...그래도 98,me에서는 잘돌아갔는데 xp에선 걸리더라구여...function GP_Change_xxxx(GLOBAL_VAR:GLOBAL_REC;aaaa:String):Boolean;external '.AAABBxxxx'; <=요기에서 상대경로에 확장자를 안주었었지요...그래서 확장자 주고(...xxxx.dll) 빌드했더니 위에러는 안나는데 이런 에러가 나더군여. '응용프로그램을 제데로 초기화할수 없습니다(0xc00000fs).응용 프로그램을 마치려면 확인을 클릭하십시오.' 황당하더군여...
그래서 다음엔 dependency walker를 사용해서 실행모듈을 따라가 보았는데...main폼이 뜨면서 여러 공통모듈을 import해 오는데(한 8개정도의 dll) 이 공통모듈을 계속 반복해서 왔다갔다 하다가 결국엔 스택오버플로우 에러가 나면서 위 에러메세지가 뜨더라구여...결국 저는 이틀동안 xp에서 저희 app 로긴화면 한번을 보지 못했습니다...
좀더 이해가기 쉽게 말씀드리면 저희 app을 실행하면 첨에 스프레쉬화면 하나뜨고 메인폼.show에서 로긴화면을 부르거든요...그래서 id/psswd받아서 이상없음 메인폼이 뜨는 아주 스탠다드한 프로그램입니다...근데 문제는 메인폼이 create되기도 전 상황에서 에러가 나면서 프로그램 초기화가 안되는 겁니다...쩝...DB에러는 아닙니다...오라클 잘 연결 되어있거든요...
아래에 소스 올립니다...제발 좋은 방법좀 알려주시기 바랍니다...
메인폼 소스...
....
....
private
gs_date: String; // PC의 현재 시간을 가지고 있는 변수.
{ Private declarations }
function UF_Check_Grant(screen_name: String): Boolean;
procedure UP_MinimizeHandler(Sender: TObject);
procedure UP_Write_LogOut;
public
{ Public declarations }
gb_swap: Boolean;
procedure UP_Call_Login_Form;
function UF_Check_Database: Boolean;
procedure GP_Call_Child_MDI_DLL(Sender:TObject; screen_name: String);
procedure GP_Call_MODAL_DLL(Sender:TObject; screen_name: String);
procedure UP_Close_All_Form;
procedure GP_Move_Exe;
end;
var
frm_main: Tfrm_main;
TimeOut: Integer;
Program_div: String; //
{$I '.IncludeGLOBALVAR.PAS'} //공통 변수 포함해서 컴파일
{$I '.IncludeMODALFORM.PAS'} //모달폼관련 포함해서 컴파일
{$I '.IncludeFILEPATH.PAS'} //버전관리관련 포함해서 컴파일
{$I '.IncludeGLOBALMODULE.PAS'} //공통모듈1 포함해서 컴파일
{$I '.IncludeCODEMODULE.PAS'} //공통모듈2 포함해서 컴파일
var GLOBAL_VAR: GLOBAL_REC;
function GF_Get_Program_Div: String; export;
procedure GP_Change_Std_Date(var GLOBAL_VAR: GLOBAL_REC); external '.DllsgtTims_gt2000.dll';
implementation
uses login, multinst, splash;
....
....
머 소스라기보다는 메인폼의 선언부 입니다...위 소스에서 공통모듈 1,2 부분을 include해 오면서 8개 정도의 dll을 건들거든요...위 공통모듈에는 "function GF_Get_Post_Inform(post_param: POST_REC): POST_REC; external '.DllsgtTims_gt_post.dll';" 와 같이 여러 공통모듈을 external 시켜놓았습니다...
델5 패치도 했구요...bde도 update 했슴다...그래도 안되여...
혹시 좀더 자세한 설명을 원하시는 분이 계시면 멜 주시면 감사하겠습니다...
흑...app땜에 저희 회사사람들이 좀더 좋은 pc를 사용하지 못한다고 하면 전 끝장납니다...좋은 결과 기다리겠습니다...
그럼...좋은 하루들 되세요...