반응형
최초 생성하면 아래 코드가 기본으로 있음.
// dllmain.cpp : DLL 애플리케이션의 진입점을 정의합니다.
#include "pch.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
외부에서 불러다가 사용할 함수 추가
// dllmain.cpp : DLL 애플리케이션의 진입점을 정의합니다.
//#include "pch.h"
#include <Windows.h>
// 외부로 내보낼 함수 정의
extern "C" __declspec(dllexport) void MyFunction() {
MessageBox(NULL, "MyFunction is called!", "DLL Message", MB_OK);
}
extern "C" __declspec(dllexport) int Add(int a, int b) {
return a + b;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
문제 1. 미리 컴파일된 헤더 pch.h가 있는 경우 주석처리하고
문제 2. 오류 C2664 'int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT)': 인수 2을(를) 'const char [22]'에서 'LPCWSTR'(으)로 변환할 수 없습니다.
발생할 경우
프로젝트 속성을 Release로 설정해놨기 때문에 컴파일 옵션도 Release로 세팅
F5 누르면 아래처럼 팝업이 뜨는데 DLL은 다른 코드가 실행 될 때 멀티스레드로 도는 형식이므로 혼자서 돌라고 만들어 진게 아니라서 그런거임.
동적 라이브러리 라는 이름 그대로 코드 실행 되는 타이밍에 실행되는 라이브러리 라고 생각하면 될듯.
이렇게 하면 dll은 준비가 된거고 다음 글에서 dll 로드 및 dll 함수 사용해보도록 하겠음.
반응형
'C++ Programming' 카테고리의 다른 글
[C++] DLL 로드해서 사용하기 (3) | 2024.10.23 |
---|---|
[C++] Map 공부 (0) | 2024.07.06 |
[C++ Programming] 문자열 변환 c_str() 함수 (0) | 2024.07.06 |
[C++] Vector 공부 (0) | 2024.07.06 |
[C++ Programming] Template을 사용한 Doubly Linked List 구현 (1) | 2024.03.17 |