암시적 연결방식 처럼 SwapDll.lib 는 필요없고, 필요할 때 DLL 만 로드해서 사용한다. WIN32 콘솔응용프로그램 프로젝트를 선택하고, 아래 그림에서 DLL을 선택한다. HModule LoadLibrary(LPCTSTR DLL파일명) // DLL 을 로드(매핑)한다. FARPROC GetProcAddress(HMODULE hModule, LPCSTR 함수명) // 로드된(매핑) DLL 에서 함수주소(함수포인터)를 얻는다. BOOL FreeLibrary(HMODULE hModule) // 로드된 DLL 언로드(매핑해제)한다. **** 암시적 연결방식에서는 묵시적 연결방식과 달리 extern "C" 가 필요하다. extern "C" ____declspec(dllexport) // DLL에서 외부에..
암묵적 연결 (Implicit Linking) 방법으로 동적 라이브러리(DLL) 만들기 콘솔응용프로프로그램 / 동적 라이브러리와 같은 방식으로 프로젝트 만들고, __declspec(dllimport) // 실행파일에서 Dll 로부터 제공받을 함수 선언 void swap(int* v1, int* v2); ____declspec(dllexport) // DLL에서 외부에 제공할 함수 선언 void swap(int* v1, int* v2) { int temp = *v1; *v1 = *v2; *v2 = temp; } 컴파일하면 SwapDll.LIB 와 SwapDll.DLL 2개 만들어진다. LIB 파일은 실행파일 링크 시 DLL 파일에 대한 정보를 제공하고, DLL 파일은 실행 시 호출되는 함수를 갖는 파일이다..
라이브러리(Library) 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어 놓은 파일. #include printf("Hello, World! \n"); printf()는 stdio.h 에 int __cdecl printf(const char *, ...); 라 선언되어 있고 정의는 없다. 즉, printf()의 선언은 stdio.h 에 존재하지만, printf()의 정의가 컴파일된 바이너리 코드는 라이브러리에 존재한다. 이 라이브러리들은 호출가능한 ANSI표준 C함수들로 구성되어 있기 때문에 'C런타임 라이브러리(Run-Time Library)라 불린다. C Run-Time Library 예 Libcmt.lib : 멀티스레드, 정적링크 Libcmtd.lib : 멀티..
류광역, 정보문화사 (Hanbat Lib.) NTFS (NT File System) 파일과 폴더명은 256자 (8 bit), 경로명은 최대 260자 (MAX_PATH)로 제한 함. 8bit 문자 - char, CHAR 16bit 문자 : wchar_t, WCHAR 유니코드(Unicode)를 사용하기 위해 #define UNICODE, #define _UNICODE 포함해야 한다. 이를 포함하지 않으면 TCHAR 는 CHAR 가 된다. UNICODE 는 Windows함수에, _UNICODE 는 C 라이브러리에 영향을 준다. _fgettc 와 같이 _함수명 은 Microsoft C 가 적용된다. "이 문자열은 8비트 문자열" : ANCI C 적용 L"이 문자열은 16비트 문자열" : ANCI C 적용 _T(..