gpg2 dll로부터 c++_클래스_내보내기

9
1.4. DLL 로 로로 C++ 로로로 로로로로

Upload: young-jun-jeong

Post on 25-May-2015

696 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Gpg2 dll로부터 c++_클래스_내보내기

1.4. DLL 로 부터 C++

클래스 내보내기

Page 2: Gpg2 dll로부터 c++_클래스_내보내기

1. 함수 Export

2. 클래스 Export

3. 클래스 맴버함수 Export

4. 가상 클래스 맴버함수 Export

차례

Page 3: Gpg2 dll로부터 c++_클래스_내보내기

소스 코드 공개 없이 기능 로직을 다른 응용 프로그램에 제공하거나 클래스를 상속할 수 있게 해준다 .

실행파일의 가상 메모리 영역에 Mapping 해서 사용되기 때문에 , 둘 이상의 프로세스가 같은 DLL 을 공유하는 경우 , 메인 메모리에서 공유가 이루어진다 .

왜 DLL 인가요 ?

Page 4: Gpg2 dll로부터 c++_클래스_내보내기

__declspec(dllexport) : DLL 로 Ex-port 되서 배포할 때 함수에 사용

__declspec(dllimport) : DLL 을 사용하는 경우에 정의

1. 함수 Export

Page 5: Gpg2 dll로부터 c++_클래스_내보내기

매크로 정의에 따라 DLL 사용방식 변경

Class 정의에 __declspec 를 사용해준다 .

응용 프로그램에서 DLL 에 있는 클래스를 선언하거나 할당할 때 메모리 추적이 잘 못될 수 있으므로 주의해야 함 .

2. 클래스 Export

Page 6: Gpg2 dll로부터 c++_클래스_내보내기

Class 공개 보호를 위해 해당 클래스 맴버 함수에만 __declspec 처리를 해준다 .

클래스 에서는 public 이여도 ex-port 처리 하지 않으면 DLL 외부에서 접근하지 못하므로 사용방식을 제한할 수 있다 .

3. 클래스 맴버 함수 Export

Page 7: Gpg2 dll로부터 c++_클래스_내보내기

LoadLibrary 를 이용한 실행시점에서의 DLL 로딩시 inline 함수를 확장시키지 않으면 에러 발생 .

맴버 함수를 가상함수로 선언하면 인라인 함수 확장이 따로 필요없음 .

응용 프로그램 상에서는 별다른 작업 없이 그대로 파생되는 클래스를 제작 할 수 있다 .

4. 가상 클래스 맴버 함수 Export

Page 8: Gpg2 dll로부터 c++_클래스_내보내기

게임 브리오 DLL 라이브러 처리 방식

빌드할 때 네이밍에 버전 , 컴파일러 , 빌드방식을 표기

사용자가 원하는 DLL 을 가져다 쓰게 정의 .

5. 예제

Page 9: Gpg2 dll로부터 c++_클래스_내보내기

마무리