- dll 내부 함수 목록 확인
> Visual Studio에서 TOOLS 메뉴의 Visual Studio Command Prompt 실행
> dumpbin /export [라이브러리].dll
> dll의 내부 함수 목록을 알 수 있음
- dll 내부 함수 목록으로 lib 생성하기
> def 파일 생성 및 dumpbin에서 얻은 목록 작성
LIBRARY [라이브러리].dll
EXPORT
Func1
Func2
...
> lib /def:[라이브러리].def /machine:x86
> 생성됨
https://msdn.microsoft.com/ko-kr/library/d91k01sh.aspx
- def 파일을 프로젝트 설정->링커->입력->모듈정의파일에 설정하면 알아서 만들어짐
cf. __declspec()은 microsoft vs에서만 가능하다
https://msdn.microsoft.com/ko-kr/library/dabb5z75.aspx
https://msdn.microsoft.com/ko-kr/library/a90k134d.aspx
- dll 명시적 연결(Explicit Linking)
> LoadLibrary() : 라이브러리 연결
> GetProcAddress() : 함수 이름으로 함수포인터 받아옴
> FreeLibrary() : 라이브러리 해지
> DLL이 필요한 시점에서 로딩하고, 불필요하면 반환하기 때문에 메모리가 절약
* 레퍼런스 카운트가 기반이 되어 제공, 가상 메모리에서 할당 및 해제되며 물리 메모리는 아님, 공유하는 프로세스별로 독립적
> DLL의 교체, 선택 가능
> 필요한 순간에 하나씩 로딩이 가능하여 실행까지 걸리는 시간을 짧게 하고 DLL로딩 시간을 분산 시킬 수 있음
cf. extern "C" 선언은 Cpp에서만 먹히고 C에서는 안먹힘
'programing > C++' 카테고리의 다른 글
VLD(Visual Leak Detector) 사용법 (0) | 2017.02.22 |
---|---|
포인터 (0) | 2017.02.17 |
인라인 함수와 템플릿 (0) | 2017.01.25 |
음성 채팅 구현 (0) | 2017.01.20 |
[Modern C++] RValue Reference (0) | 2016.12.29 |