간단한 Dynamic-Link 라이브러리 만들기
다음 예제는 간단한 DLL, Myputs.dll 만드는 데 필요한 소스 코드입니다. myPuts라는 간단한 문자열 인쇄 함수를 정의합니다. Myputs DLL은 C 런타임 라이브러리와 연결되고 수행할 자체의 초기화 또는 정리 함수가 없으므로 진입점 함수를 정의하지 않습니다.
DLL을 빌드하려면 개발 도구에 포함된 설명서의 지침을 따릅니다.
myPuts를 사용하는 예제는 Load-Time 동적 연결 사용 또는 Run-Time 동적 연결 사용을 참조하세요.
// The myPuts function writes a null-terminated string to
// the standard output device.
// The export mechanism used here is the __declspec(export)
// method supported by Microsoft Visual Studio, but any
// other export method supported by your development
// environment may be substituted.
#include <windows.h>
#define EOF (-1)
#ifdef __cplusplus // If used by C++ code,
extern "C" { // we need to export the C interface
#endif
__declspec(dllexport) int __cdecl myPuts(LPCWSTR lpszMsg)
{
DWORD cchWritten;
HANDLE hConout;
BOOL fRet;
// Get a handle to the console output device.
hConout = CreateFileW(L"CONOUT$",
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hConout)
return EOF;
// Write a null-terminated string to the console output device.
while (*lpszMsg != L'\0')
{
fRet = WriteConsole(hConout, lpszMsg, 1, &cchWritten, NULL);
if( (FALSE == fRet) || (1 != cchWritten) )
return EOF;
lpszMsg++;
}
return 1;
}
#ifdef __cplusplus
}
#endif