신효철 님이 쓰신 글 :
: 안녕하세요.
: 초보개발자 입니다.
: dll파일 사용법을 공부하던 중 잘 되지 않아 이렇게 질문을 하게 되었습니다.
: dll파일은 델파이에서 만들고 사용은 c++빌더에서 하고 있습니다.
:
: dll소스
:
: library Project4;
:
: exports //밖에 내보내다
: ____; //클래스는 어떻게 불러와야 할가요??
:
:
: type
: TFtpSW = class(TObject)
: private
: public
: ftpSW : TIdFTP;
: constructor create; virtual;
: function SWconnect(host:AnsiString; name:AnsiString; pw:AnsiString; path:AnsiString): Integer;
: function SWfileget(path:AnsiString; filenum:Integer): AnsiString;
: destructor SWDestroy;
: end;
:
: 로 만들었습니다.
:
: exports 시 class를 어찌 내보내야 할지 모르겠고
: class 를 어찌 불러와서 사용해야 할지 모르겠습니다.
:
: 기본적은 함수들을 dll로 만들어 불러올때는
:
: typedef int (*TSum)(int a, int b);
:
: TSum sumtest;
: sumtest = (TSum)GetProcAddress(hDll,"Sum");
: ShowMessage(sumtest(1,2));
:
: 위와 같은 형식으로 불러왔는데
: class 의 경우는 잘 모르겠습니다.
:
: dll 파일에서
:
: function swftp: TObject; stdcall;
:
: implementation
:
: function swftp;
: begin
: Result := TFtpSW.Create;
: end;
:
: 도 해보고
: 불러오는 프로젝트에서
:
: typedef void (*Tswftp);
:
: HINSTANCE hDll = Null;
: hDll = LoadLibraryA("Project4.dll");
: if (hDll)
: {
: Tswftp ftp;
: ftp = (Tswftp)GetProcAddress(hDll, "swftp");
: ftp();
:
: 과 같이 했더니 함수를 부를수 없다고 에러가 납니다.
:
: 간단한 예제나 도움좀 부탁드립니다.
: 책도 없고 인터넷 찾아가며 배우려니 너무 힘드네요..
클래스는 서로 사용이 불가능해서 보편적인(?) Interface를 이용한 방법이 제일 좋을 것 같습니다.
간단한 예제를 델마당에 "DLL+" 라는 것으로 자료실에 예제를 올렸었던 것 같습니다.
참고하세요.
|